bluekiwi 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.md +59 -0
  2. package/dist/assets/app-runtime/.next/BUILD_ID +1 -1
  3. package/dist/assets/app-runtime/.next/app-path-routes-manifest.json +5 -5
  4. package/dist/assets/app-runtime/.next/build-manifest.json +2 -2
  5. package/dist/assets/app-runtime/.next/prerender-manifest.json +3 -3
  6. package/dist/assets/app-runtime/.next/server/app/(app)/credentials/page_client-reference-manifest.js +1 -1
  7. package/dist/assets/app-runtime/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  8. package/dist/assets/app-runtime/.next/server/app/(app)/instructions/page_client-reference-manifest.js +1 -1
  9. package/dist/assets/app-runtime/.next/server/app/(app)/page_client-reference-manifest.js +1 -1
  10. package/dist/assets/app-runtime/.next/server/app/(app)/settings/groups/page_client-reference-manifest.js +1 -1
  11. package/dist/assets/app-runtime/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  12. package/dist/assets/app-runtime/.next/server/app/(app)/tasks/[id]/page.js +1 -1
  13. package/dist/assets/app-runtime/.next/server/app/(app)/tasks/[id]/page_client-reference-manifest.js +1 -1
  14. package/dist/assets/app-runtime/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -1
  15. package/dist/assets/app-runtime/.next/server/app/(app)/tutorial/page_client-reference-manifest.js +1 -1
  16. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/[id]/edit/page_client-reference-manifest.js +1 -1
  17. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/[id]/page_client-reference-manifest.js +1 -1
  18. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/new/page_client-reference-manifest.js +1 -1
  19. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/page_client-reference-manifest.js +1 -1
  20. package/dist/assets/app-runtime/.next/server/app/(auth)/change-password/page_client-reference-manifest.js +1 -1
  21. package/dist/assets/app-runtime/.next/server/app/(auth)/invite/[token]/page_client-reference-manifest.js +1 -1
  22. package/dist/assets/app-runtime/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
  23. package/dist/assets/app-runtime/.next/server/app/(auth)/setup/page_client-reference-manifest.js +1 -1
  24. package/dist/assets/app-runtime/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  25. package/dist/assets/app-runtime/.next/server/app/_global-error.html +1 -1
  26. package/dist/assets/app-runtime/.next/server/app/_global-error.rsc +1 -1
  27. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  28. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  29. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  30. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  31. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  32. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  33. package/dist/assets/app-runtime/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  34. package/dist/assets/app-runtime/.next/server/app/_not-found.html +1 -1
  35. package/dist/assets/app-runtime/.next/server/app/_not-found.rsc +1 -1
  36. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  37. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  38. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  39. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  40. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  41. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  42. package/dist/assets/app-runtime/.next/server/app/api/tasks/start/route.js +1 -1
  43. package/dist/assets/app-runtime/.next/server/app/api/version/route.js +1 -1
  44. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/activate/route.js +5 -5
  45. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/route.js +5 -5
  46. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/transfer/route.js +5 -5
  47. package/dist/assets/app-runtime/.next/server/app/api/workflows/import/route.js +1 -1
  48. package/dist/assets/app-runtime/.next/server/app/api/workflows/route.js +5 -5
  49. package/dist/assets/app-runtime/.next/server/app/change-password.html +1 -1
  50. package/dist/assets/app-runtime/.next/server/app/change-password.rsc +1 -1
  51. package/dist/assets/app-runtime/.next/server/app/change-password.segments/!KGF1dGgp/change-password/__PAGE__.segment.rsc +1 -1
  52. package/dist/assets/app-runtime/.next/server/app/change-password.segments/!KGF1dGgp/change-password.segment.rsc +1 -1
  53. package/dist/assets/app-runtime/.next/server/app/change-password.segments/!KGF1dGgp.segment.rsc +1 -1
  54. package/dist/assets/app-runtime/.next/server/app/change-password.segments/_full.segment.rsc +1 -1
  55. package/dist/assets/app-runtime/.next/server/app/change-password.segments/_head.segment.rsc +1 -1
  56. package/dist/assets/app-runtime/.next/server/app/change-password.segments/_index.segment.rsc +1 -1
  57. package/dist/assets/app-runtime/.next/server/app/change-password.segments/_tree.segment.rsc +1 -1
  58. package/dist/assets/app-runtime/.next/server/app/login.html +1 -1
  59. package/dist/assets/app-runtime/.next/server/app/login.rsc +1 -1
  60. package/dist/assets/app-runtime/.next/server/app/login.segments/!KGF1dGgp/login/__PAGE__.segment.rsc +1 -1
  61. package/dist/assets/app-runtime/.next/server/app/login.segments/!KGF1dGgp/login.segment.rsc +1 -1
  62. package/dist/assets/app-runtime/.next/server/app/login.segments/!KGF1dGgp.segment.rsc +1 -1
  63. package/dist/assets/app-runtime/.next/server/app/login.segments/_full.segment.rsc +1 -1
  64. package/dist/assets/app-runtime/.next/server/app/login.segments/_head.segment.rsc +1 -1
  65. package/dist/assets/app-runtime/.next/server/app/login.segments/_index.segment.rsc +1 -1
  66. package/dist/assets/app-runtime/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  67. package/dist/assets/app-runtime/.next/server/app/setup.html +1 -1
  68. package/dist/assets/app-runtime/.next/server/app/setup.rsc +1 -1
  69. package/dist/assets/app-runtime/.next/server/app/setup.segments/!KGF1dGgp/setup/__PAGE__.segment.rsc +1 -1
  70. package/dist/assets/app-runtime/.next/server/app/setup.segments/!KGF1dGgp/setup.segment.rsc +1 -1
  71. package/dist/assets/app-runtime/.next/server/app/setup.segments/!KGF1dGgp.segment.rsc +1 -1
  72. package/dist/assets/app-runtime/.next/server/app/setup.segments/_full.segment.rsc +1 -1
  73. package/dist/assets/app-runtime/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  74. package/dist/assets/app-runtime/.next/server/app/setup.segments/_index.segment.rsc +1 -1
  75. package/dist/assets/app-runtime/.next/server/app/setup.segments/_tree.segment.rsc +1 -1
  76. package/dist/assets/app-runtime/.next/server/app-paths-manifest.json +5 -5
  77. package/dist/assets/app-runtime/.next/server/chunks/2624.js +1 -1
  78. package/dist/assets/app-runtime/.next/server/chunks/4024.js +1 -1
  79. package/dist/assets/app-runtime/.next/server/middleware-build-manifest.js +1 -1
  80. package/dist/assets/app-runtime/.next/server/pages/404.html +1 -1
  81. package/dist/assets/app-runtime/.next/server/pages/500.html +1 -1
  82. package/dist/assets/app-runtime/.next/server/server-reference-manifest.json +1 -1
  83. package/dist/assets/app-runtime/.next/static/chunks/{7552-67667f5f15d4f961.js → 7552-aa220264909ca9d9.js} +1 -1
  84. package/dist/assets/app-runtime/.next/static/chunks/{9243-34655a593a6aa471.js → 9243-9c99cc0df75c9121.js} +1 -1
  85. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/instructions/{page-0aa5fcbf056c7144.js → page-dd25654a8191a638.js} +1 -1
  86. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/{layout-64cb9b84079366f9.js → layout-d7f54b544bb8d2df.js} +1 -1
  87. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/tasks/[id]/{page-29349afdbe6e318f.js → page-e88075977b43a9d5.js} +1 -1
  88. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linux-arm64/lib/index.js +1 -0
  89. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linux-arm64/lib/libvips-cpp.so.8.17.3 +0 -0
  90. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linux-arm64/package.json +42 -0
  91. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linux-arm64/versions.json +30 -0
  92. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linuxmusl-arm64/lib/index.js +1 -0
  93. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linuxmusl-arm64/lib/libvips-cpp.so.8.17.3 +0 -0
  94. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linuxmusl-arm64/package.json +42 -0
  95. package/dist/assets/app-runtime/node_modules/@img/sharp-libvips-linuxmusl-arm64/versions.json +30 -0
  96. package/dist/assets/app-runtime/node_modules/@img/sharp-linux-arm64/LICENSE +191 -0
  97. package/dist/assets/app-runtime/node_modules/@img/sharp-linux-arm64/lib/sharp-linux-arm64.node +0 -0
  98. package/dist/assets/app-runtime/node_modules/@img/sharp-linux-arm64/package.json +46 -0
  99. package/dist/assets/app-runtime/node_modules/@img/sharp-linuxmusl-arm64/LICENSE +191 -0
  100. package/dist/assets/app-runtime/node_modules/@img/sharp-linuxmusl-arm64/lib/sharp-linuxmusl-arm64.node +0 -0
  101. package/dist/assets/app-runtime/node_modules/@img/sharp-linuxmusl-arm64/package.json +46 -0
  102. package/dist/assets/app-runtime/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  103. package/dist/assets/app-runtime/package.json +1 -1
  104. package/dist/runtimes/antigravity.js +14 -0
  105. package/dist/runtimes/claude-code.js +10 -62
  106. package/dist/runtimes/claude-desktop.js +16 -0
  107. package/dist/runtimes/cline.js +16 -0
  108. package/dist/runtimes/codex.js +8 -24
  109. package/dist/runtimes/continue.js +68 -0
  110. package/dist/runtimes/cursor.js +14 -0
  111. package/dist/runtimes/detect.js +24 -0
  112. package/dist/runtimes/gemini-cli.js +9 -61
  113. package/dist/runtimes/goose.js +109 -0
  114. package/dist/runtimes/jetbrains.js +50 -0
  115. package/dist/runtimes/json-mcp.js +93 -0
  116. package/dist/runtimes/openclaw.js +9 -61
  117. package/dist/runtimes/opencode.js +9 -61
  118. package/dist/runtimes/platform-paths.js +57 -0
  119. package/dist/runtimes/roo-code.js +15 -0
  120. package/dist/runtimes/skills-helper.js +31 -0
  121. package/dist/runtimes/trae.js +16 -0
  122. package/dist/runtimes/vscode.js +19 -0
  123. package/dist/runtimes/windsurf.js +15 -0
  124. package/dist/runtimes/zed.js +16 -0
  125. package/package.json +6 -3
  126. /package/dist/assets/app-runtime/.next/static/{hqMZcC_as2uhicKR6YANm → UVzMOjly0ACJRK3vNndFP}/_buildManifest.js +0 -0
  127. /package/dist/assets/app-runtime/.next/static/{hqMZcC_as2uhicKR6YANm → UVzMOjly0ACJRK3vNndFP}/_ssgManifest.js +0 -0
@@ -3,4 +3,4 @@
3
3
  3:I[90484,[],"MetadataBoundary"]
4
4
  4:"$Sreact.suspense"
5
5
  5:I[86869,[],"IconMark"]
6
- 0:{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$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":"BlueKiwi"}],["$","meta","1",{"name":"description","content":"Design reusable workflows, run them from any AI coding agent, and watch every step in real time."}],["$","meta","2",{"property":"og:title","content":"BlueKiwi — AI Agent Workflow Engine"}],["$","meta","3",{"property":"og:description","content":"Design reusable workflows, run them from any AI coding agent, and watch every step in real time."}],["$","meta","4",{"property":"og:site_name","content":"BlueKiwi"}],["$","meta","5",{"property":"og:locale","content":"ko_KR"}],["$","meta","6",{"property":"og:image","content":"http://localhost:3100/og-cover.png"}],["$","meta","7",{"property":"og:image:width","content":"1200"}],["$","meta","8",{"property":"og:image:height","content":"630"}],["$","meta","9",{"property":"og:image:alt","content":"BlueKiwi — AI Agent Workflow Engine"}],["$","meta","10",{"property":"og:type","content":"website"}],["$","meta","11",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","12",{"name":"twitter:title","content":"BlueKiwi — AI Agent Workflow Engine"}],["$","meta","13",{"name":"twitter:description","content":"Design reusable workflows, run them from any AI coding agent, and watch every step in real time."}],["$","meta","14",{"name":"twitter:image","content":"http://localhost:3100/og-cover.png"}],["$","link","15",{"rel":"icon","href":"/favicon.ico","sizes":"32x32"}],["$","link","16",{"rel":"icon","href":"/favicon.png","type":"image/png","sizes":"32x32"}],["$","link","17",{"rel":"icon","href":"/icon-192.png","type":"image/png","sizes":"192x192"}],["$","link","18",{"rel":"icon","href":"/icon-512.png","type":"image/png","sizes":"512x512"}],["$","link","19",{"rel":"apple-touch-icon","href":"/apple-touch-icon.png"}],["$","$L5","20",{}]]}]}]}],null]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"hqMZcC_as2uhicKR6YANm"}
6
+ 0:{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$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":"BlueKiwi"}],["$","meta","1",{"name":"description","content":"Design reusable workflows, run them from any AI coding agent, and watch every step in real time."}],["$","meta","2",{"property":"og:title","content":"BlueKiwi — AI Agent Workflow Engine"}],["$","meta","3",{"property":"og:description","content":"Design reusable workflows, run them from any AI coding agent, and watch every step in real time."}],["$","meta","4",{"property":"og:site_name","content":"BlueKiwi"}],["$","meta","5",{"property":"og:locale","content":"ko_KR"}],["$","meta","6",{"property":"og:image","content":"http://localhost:3100/og-cover.png"}],["$","meta","7",{"property":"og:image:width","content":"1200"}],["$","meta","8",{"property":"og:image:height","content":"630"}],["$","meta","9",{"property":"og:image:alt","content":"BlueKiwi — AI Agent Workflow Engine"}],["$","meta","10",{"property":"og:type","content":"website"}],["$","meta","11",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","12",{"name":"twitter:title","content":"BlueKiwi — AI Agent Workflow Engine"}],["$","meta","13",{"name":"twitter:description","content":"Design reusable workflows, run them from any AI coding agent, and watch every step in real time."}],["$","meta","14",{"name":"twitter:image","content":"http://localhost:3100/og-cover.png"}],["$","link","15",{"rel":"icon","href":"/favicon.ico","sizes":"32x32"}],["$","link","16",{"rel":"icon","href":"/favicon.png","type":"image/png","sizes":"32x32"}],["$","link","17",{"rel":"icon","href":"/icon-192.png","type":"image/png","sizes":"192x192"}],["$","link","18",{"rel":"icon","href":"/icon-512.png","type":"image/png","sizes":"512x512"}],["$","link","19",{"rel":"apple-touch-icon","href":"/apple-touch-icon.png"}],["$","$L5","20",{}]]}]}]}],null]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"UVzMOjly0ACJRK3vNndFP"}
@@ -4,4 +4,4 @@
4
4
  4:I[74581,[],""]
5
5
  5:I[30852,["7262","static/chunks/7262-cdb2767600e6e41e.js","2360","static/chunks/2360-3fea55936dac2ff8.js","7177","static/chunks/app/layout-e3f307ffaa2d11cc.js"],"Toaster"]
6
6
  :HL["/_next/static/css/2bc6b6e35d293c50.css","style"]
7
- 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/2bc6b6e35d293c50.css","precedence":"next"}]],["$","html",null,{"lang":"ko","className":"antialiased","children":["$","body",null,{"className":"min-h-screen","children":["$","$L2",null,{"children":[["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}]}],["$","$L5",null,{"position":"top-right"}]]}]}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"hqMZcC_as2uhicKR6YANm"}
7
+ 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/2bc6b6e35d293c50.css","precedence":"next"}]],["$","html",null,{"lang":"ko","className":"antialiased","children":["$","body",null,{"className":"min-h-screen","children":["$","$L2",null,{"children":[["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}]}],["$","$L5",null,{"position":"top-right"}]]}]}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"UVzMOjly0ACJRK3vNndFP"}
@@ -1,5 +1,5 @@
1
1
  1:"$Sreact.fragment"
2
2
  2:I[90484,[],"OutletBoundary"]
3
3
  3:"$Sreact.suspense"
4
- 0:{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"hqMZcC_as2uhicKR6YANm"}
4
+ 0:{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"UVzMOjly0ACJRK3vNndFP"}
5
5
  4:null
@@ -2,4 +2,4 @@
2
2
  2:I[57121,[],""]
3
3
  3:I[74581,[],""]
4
4
  4:[]
5
- 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"hqMZcC_as2uhicKR6YANm"}
5
+ 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"UVzMOjly0ACJRK3vNndFP"}
@@ -1,2 +1,2 @@
1
1
  :HL["/_next/static/css/2bc6b6e35d293c50.css","style"]
2
- 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"_not-found","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"hqMZcC_as2uhicKR6YANm"}
2
+ 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"_not-found","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"UVzMOjly0ACJRK3vNndFP"}
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=7129,a.ids=[7129],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},48269:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>k});var e=c(23211),f=c(20903),g=c(1800),h=c(13240),i=c(1990),j=a([f,g,h]);[f,g,h]=j.then?(await j)():j;let k=(0,g.ru)("tasks:execute",async(a,b)=>{let c,{workflow_id:d,version:g,title:j,context:k,session_meta:l,target:m,provider_slug:n,model_slug:o}=await a.json();if(!d){let a=(0,f.yj)("VALIDATION_ERROR","workflow_id is required",400);return e.NextResponse.json(a.body,{status:a.status})}if(void 0!==m&&("object"!=typeof m||null===m||Array.isArray(m))){let a=(0,f.yj)("VALIDATION_ERROR","target는 객체여야 합니다",400);return e.NextResponse.json(a.body,{status:a.status})}if(g){let a=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[Number(d)]),b=a?(0,f.U9)("workflows",a):void 0;if(!b){let a=(0,f.yj)("NOT_FOUND","워크플로를 찾을 수 없습니다",404);return e.NextResponse.json(a.body,{status:a.status})}let h=await (0,f.Zy)("SELECT * FROM workflows WHERE family_root_id = $1 AND version = $2",[b.family_root_id,g]);if(!(c=h?(0,f.U9)("workflows",h):void 0)){let a=(0,f.yj)("NOT_FOUND",`버전 ${g}에 해당하는 워크플로를 찾을 수 없습니다`,404);return e.NextResponse.json(a.body,{status:a.status})}}else{let a=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[Number(d)]);if(!(c=a?(0,f.U9)("workflows",a):void 0)){let a=(0,f.yj)("NOT_FOUND","워크플로를 찾을 수 없습니다",404);return e.NextResponse.json(a.body,{status:a.status})}}if(!c.is_active){let a=(0,f.yj)("VERSION_INACTIVE",`워크플로 버전 ${c.version}은 비활성 상태입니다. 활성 버전을 사용하거나 먼저 활성화하세요.`,409);return e.NextResponse.json(a.body,{status:a.status})}if(!await (0,h.cH)(b,c)){let a=(0,f.yj)("OWNERSHIP_REQUIRED","이 워크플로에 대한 실행 권한이 없습니다",403);return e.NextResponse.json(a.body,{status:a.status})}for(let a of(await (0,f.P)("SELECT id, step_order, credential_id, credential_requirement, title FROM workflow_nodes WHERE workflow_id = $1",[c.id]))){let c=(0,i.Wy)(a.credential_requirement);if(null===a.credential_id){if(c){let b=(0,f.yj)("WORKFLOW_CREDENTIAL_SETUP_REQUIRED",`노드 "${a.title}" (#${a.step_order})의 크레덴셜 설정이 필요합니다`,409,{step_order:a.step_order,service_name:c.service_name,required_keys:c.keys.map(a=>a.name).join(", ")});return e.NextResponse.json(b.body,{status:b.status})}continue}let d=await (0,f.Zy)("SELECT id, owner_id, folder_id, service_name, secrets FROM credentials WHERE id = $1",[a.credential_id]);if(!d)continue;if(!await (0,h.Zk)(b,d)){let b=(0,f.yj)("CREDENTIAL_USE_DENIED",`노드 "${a.title}" (#${a.step_order})의 크레덴셜에 대한 사용 권한이 없습니다`,403);return e.NextResponse.json(b.body,{status:b.status})}let g=(0,i.et)(c,d);if(g&&"ready"!==g.status){let b=(0,f.yj)("WORKFLOW_CREDENTIAL_SETUP_REQUIRED",`노드 "${a.title}" (#${a.step_order})의 크레덴셜 설정이 완전하지 않습니다`,409,{step_order:a.step_order,service_name:g.service_name,required_keys:g.required_keys.join(", "),missing_keys:g.missing_keys.join(", "),service_mismatch:g.service_mismatch?"true":"false"});return e.NextResponse.json(b.body,{status:b.status})}}let p=await (0,f.Zy)("SELECT * FROM workflow_nodes WHERE workflow_id = $1 ORDER BY step_order ASC LIMIT 1",[c.id]),q=p?(0,f.U9)("workflow_nodes",p):void 0;if(!q){let a=(0,f.yj)("VALIDATION_ERROR","워크플로에 노드가 없습니다",400);return e.NextResponse.json(a.body,{status:a.status})}let r=await (0,f.Zy)("SELECT COUNT(*) as count FROM workflow_nodes WHERE workflow_id = $1",[c.id]),s=Number(r?.count??0),t=await (0,f.YW)("INSERT INTO tasks (workflow_id, status, current_step, title, context, session_meta, target_meta, provider_slug, model_slug) VALUES ($1, 'running', 1, $2, $3, $4, $5, $6, $7)",[c.id,j?String(j).slice(0,120):null,k??"",l??"{}",m?JSON.stringify(m):null,n??null,o??null]);n&&await (0,f.g7)("INSERT INTO agent_registry (kind, slug, display_name) VALUES ('provider', $1, $1) ON CONFLICT (kind, slug) DO NOTHING",[n]),o&&await (0,f.g7)("INSERT INTO agent_registry (kind, slug, display_name) VALUES ('model', $1, $1) ON CONFLICT (kind, slug) DO NOTHING",[o]),await (0,f.P)("INSERT INTO task_logs (task_id, node_id, step_order, status, node_title, node_type) VALUES ($1, $2, $3, 'pending', $4, $5)",[t,q.id,q.step_order,q.title,q.node_type]);let u=q.instruction;if(q.instruction_id){let a=await (0,f.Zy)("SELECT content FROM instructions WHERE id = $1",[q.instruction_id]);a&&(u=a.content)}let v=null;if(q.credential_id){let a=await (0,f.Zy)("SELECT service_name, secrets FROM credentials WHERE id = $1",[q.credential_id]);a&&(v={service:a.service_name,secrets_masked:(0,f.QU)(a.secrets)})}let w=(0,f.iA)({task_id:t,workflow_id:c.id,workflow_title:c.title,version:c.version,evaluation_contract:c.evaluation_contract??null,total_steps:s,current_step:{node_id:q.id,step_order:q.step_order,node_type:q.node_type,title:q.title,instruction:u,auto_advance:!!q.auto_advance,loop_back_to:q.loop_back_to,credentials:v}},201);return e.NextResponse.json(w.body,{status:w.status})});d()}catch(a){d(a)}})},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{a.exports=import("pg")},84486:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(48269),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/tasks/start/route",pathname:"/api/tasks/start",filename:"route",bundlePath:"app/api/tasks/start/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/api/tasks/start/route.ts",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/tasks/start/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||z.isDev||y||(K=E,K="/index"===K?"/":K);let L=!0===z.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await z.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},93139:a=>{a.exports=import("bcryptjs")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[3445,7111,1813,859,7945],()=>b(b.s=84486));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=7129,a.ids=[7129],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},48269:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>k});var e=c(23211),f=c(20903),g=c(1800),h=c(13240),i=c(1990),j=a([f,g,h]);[f,g,h]=j.then?(await j)():j;let k=(0,g.ru)("tasks:execute",async(a,b)=>{let c,{workflow_id:d,version:g,title:j,context:k,session_meta:l,target:m,provider_slug:n,model_slug:o}=await a.json();if(!d){let a=(0,f.yj)("VALIDATION_ERROR","workflow_id is required",400);return e.NextResponse.json(a.body,{status:a.status})}if(void 0!==m&&("object"!=typeof m||null===m||Array.isArray(m))){let a=(0,f.yj)("VALIDATION_ERROR","target는 객체여야 합니다",400);return e.NextResponse.json(a.body,{status:a.status})}if(g){let a=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[Number(d)]),b=a?(0,f.U9)("workflows",a):void 0;if(!b){let a=(0,f.yj)("NOT_FOUND","워크플로를 찾을 수 없습니다",404);return e.NextResponse.json(a.body,{status:a.status})}let h=await (0,f.Zy)("SELECT * FROM workflows WHERE family_root_id = $1 AND version = $2",[b.family_root_id,g]);if(!(c=h?(0,f.U9)("workflows",h):void 0)){let a=(0,f.yj)("NOT_FOUND",`버전 ${g}에 해당하는 워크플로를 찾을 수 없습니다`,404);return e.NextResponse.json(a.body,{status:a.status})}}else{let a=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[Number(d)]);if(!(c=a?(0,f.U9)("workflows",a):void 0)){let a=(0,f.yj)("NOT_FOUND","워크플로를 찾을 수 없습니다",404);return e.NextResponse.json(a.body,{status:a.status})}}if(!c.is_active){let a=(0,f.yj)("VERSION_INACTIVE",`워크플로 버전 ${c.version}은 비활성 상태입니다. 활성 버전을 사용하거나 먼저 활성화하세요.`,409);return e.NextResponse.json(a.body,{status:a.status})}if(!await (0,h.cH)(b,c)){let a=(0,f.yj)("OWNERSHIP_REQUIRED","이 워크플로에 대한 실행 권한이 없습니다",403);return e.NextResponse.json(a.body,{status:a.status})}for(let a of(await (0,f.P)("SELECT id, step_order, credential_id, credential_requirement, title FROM workflow_nodes WHERE workflow_id = $1",[c.id]))){let c=(0,i.Wy)(a.credential_requirement);if(null===a.credential_id){if(c){let b=(0,f.yj)("WORKFLOW_CREDENTIAL_SETUP_REQUIRED",`노드 "${a.title}" (#${a.step_order})의 크레덴셜 설정이 필요합니다`,409,{step_order:a.step_order,service_name:c.service_name,required_keys:c.keys.map(a=>a.name).join(", ")});return e.NextResponse.json(b.body,{status:b.status})}continue}let d=await (0,f.Zy)("SELECT id, owner_id, service_name, secrets FROM credentials WHERE id = $1",[a.credential_id]);if(!d)continue;if(!await (0,h.Zk)(b,d)){let b=(0,f.yj)("CREDENTIAL_USE_DENIED",`노드 "${a.title}" (#${a.step_order})의 크레덴셜에 대한 사용 권한이 없습니다`,403);return e.NextResponse.json(b.body,{status:b.status})}let g=(0,i.et)(c,d);if(g&&"ready"!==g.status){let b=(0,f.yj)("WORKFLOW_CREDENTIAL_SETUP_REQUIRED",`노드 "${a.title}" (#${a.step_order})의 크레덴셜 설정이 완전하지 않습니다`,409,{step_order:a.step_order,service_name:g.service_name,required_keys:g.required_keys.join(", "),missing_keys:g.missing_keys.join(", "),service_mismatch:g.service_mismatch?"true":"false"});return e.NextResponse.json(b.body,{status:b.status})}}let p=await (0,f.Zy)("SELECT * FROM workflow_nodes WHERE workflow_id = $1 ORDER BY step_order ASC LIMIT 1",[c.id]),q=p?(0,f.U9)("workflow_nodes",p):void 0;if(!q){let a=(0,f.yj)("VALIDATION_ERROR","워크플로에 노드가 없습니다",400);return e.NextResponse.json(a.body,{status:a.status})}let r=await (0,f.Zy)("SELECT COUNT(*) as count FROM workflow_nodes WHERE workflow_id = $1",[c.id]),s=Number(r?.count??0),t=await (0,f.YW)("INSERT INTO tasks (workflow_id, status, current_step, title, context, session_meta, target_meta, provider_slug, model_slug) VALUES ($1, 'running', 1, $2, $3, $4, $5, $6, $7)",[c.id,j?String(j).slice(0,120):null,k??"",l??"{}",m?JSON.stringify(m):null,n??null,o??null]);n&&await (0,f.g7)("INSERT INTO agent_registry (kind, slug, display_name) VALUES ('provider', $1, $1) ON CONFLICT (kind, slug) DO NOTHING",[n]),o&&await (0,f.g7)("INSERT INTO agent_registry (kind, slug, display_name) VALUES ('model', $1, $1) ON CONFLICT (kind, slug) DO NOTHING",[o]),await (0,f.P)("INSERT INTO task_logs (task_id, node_id, step_order, status, node_title, node_type) VALUES ($1, $2, $3, 'pending', $4, $5)",[t,q.id,q.step_order,q.title,q.node_type]);let u=q.instruction;if(q.instruction_id){let a=await (0,f.Zy)("SELECT content FROM instructions WHERE id = $1",[q.instruction_id]);a&&(u=a.content)}let v=null;if(q.credential_id){let a=await (0,f.Zy)("SELECT service_name, secrets FROM credentials WHERE id = $1",[q.credential_id]);a&&(v={service:a.service_name,secrets_masked:(0,f.QU)(a.secrets)})}let w=(0,f.iA)({task_id:t,workflow_id:c.id,workflow_title:c.title,version:c.version,evaluation_contract:c.evaluation_contract??null,total_steps:s,current_step:{node_id:q.id,step_order:q.step_order,node_type:q.node_type,title:q.title,instruction:u,auto_advance:!!q.auto_advance,loop_back_to:q.loop_back_to,credentials:v}},201);return e.NextResponse.json(w.body,{status:w.status})});d()}catch(a){d(a)}})},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{a.exports=import("pg")},84486:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(48269),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/tasks/start/route",pathname:"/api/tasks/start",filename:"route",bundlePath:"app/api/tasks/start/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/api/tasks/start/route.ts",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/tasks/start/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||z.isDev||y||(K=E,K="/index"===K?"/":K);let L=!0===z.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await z.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},93139:a=>{a.exports=import("bcryptjs")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[3445,7111,1813,859,7945],()=>b(b.s=84486));module.exports=c})();
@@ -1 +1 @@
1
- (()=>{var a={};a.id=2922,a.ids=[2922],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3499:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>D,patchFetch:()=>C,routeModule:()=>y,serverHooks:()=>B,workAsyncStorage:()=>z,workUnitAsyncStorage:()=>A});var d={};c.r(d),c.d(d,{GET:()=>x,runtime:()=>w});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211);let w="nodejs";async function x(){let a="1.1.0";try{let b=await fetch("https://api.github.com/repos/dandacompany/bluekiwi/releases/latest",{headers:{Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28",...process.env.GITHUB_TOKEN?{Authorization:`Bearer ${process.env.GITHUB_TOKEN}`}:{}},next:{revalidate:3600}});if(!b.ok)return v.NextResponse.json({current:a,latest:null,hasUpdate:!1});let c=await b.json(),d=c.tag_name.replace(/^v/,""),e=c.html_url,f=function(a,b){let c=a=>a.split(".").map(Number),[d,e,f]=c(a),[g,h,i]=c(b);return d!==g?d>g:e!==h?e>h:f>i}(d,a);return v.NextResponse.json({current:a,latest:d,hasUpdate:f,releaseUrl:e})}catch{return v.NextResponse.json({current:a,latest:null,hasUpdate:!1})}}let y=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/version/route",pathname:"/api/version",filename:"route",bundlePath:"app/api/version/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/api/version/route.ts",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:z,workUnitAsyncStorage:A,serverHooks:B}=y;function C(){return(0,g.patchFetch)({workAsyncStorage:z,workUnitAsyncStorage:A})}async function D(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),y.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/version/route";"/index"===d&&(d="/");let e=await y.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:z,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!z){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||y.isDev||z||(K="/index"===(K=E)?"/":K);let L=!0===y.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await y.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>y.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>y.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await y.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await y.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await y.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[3445,1813],()=>b(b.s=3499));module.exports=c})();
1
+ (()=>{var a={};a.id=2922,a.ids=[2922],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3499:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>D,patchFetch:()=>C,routeModule:()=>y,serverHooks:()=>B,workAsyncStorage:()=>z,workUnitAsyncStorage:()=>A});var d={};c.r(d),c.d(d,{GET:()=>x,runtime:()=>w});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(23211);let w="nodejs";async function x(){let a="1.2.0";try{let b=await fetch("https://api.github.com/repos/dandacompany/bluekiwi/releases/latest",{headers:{Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28",...process.env.GITHUB_TOKEN?{Authorization:`Bearer ${process.env.GITHUB_TOKEN}`}:{}},next:{revalidate:3600}});if(!b.ok)return v.NextResponse.json({current:a,latest:null,hasUpdate:!1});let c=await b.json(),d=c.tag_name.replace(/^v/,""),e=c.html_url,f=function(a,b){let c=a=>a.split(".").map(Number),[d,e,f]=c(a),[g,h,i]=c(b);return d!==g?d>g:e!==h?e>h:f>i}(d,a);return v.NextResponse.json({current:a,latest:d,hasUpdate:f,releaseUrl:e})}catch{return v.NextResponse.json({current:a,latest:null,hasUpdate:!1})}}let y=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/version/route",pathname:"/api/version",filename:"route",bundlePath:"app/api/version/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/api/version/route.ts",nextConfigOutput:"standalone",userland:d,...{}}),{workAsyncStorage:z,workUnitAsyncStorage:A,serverHooks:B}=y;function C(){return(0,g.patchFetch)({workAsyncStorage:z,workUnitAsyncStorage:A})}async function D(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),y.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/version/route";"/index"===d&&(d="/");let e=await y.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:z,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!z){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||y.isDev||z||(K="/index"===(K=E)?"/":K);let L=!0===y.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await y.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>y.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>y.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await y.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await y.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),z&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await y.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[3445,1813],()=>b(b.s=3499));module.exports=c})();
@@ -1,17 +1,17 @@
1
- "use strict";(()=>{var a={};a.id=1850,a.ids=[1850],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31668:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(96300),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/workflows/[id]/activate/route",pathname:"/api/workflows/[id]/activate",filename:"route",bundlePath:"app/api/workflows/[id]/activate/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/api/workflows/[id]/activate/route.ts",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/workflows/[id]/activate/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||z.isDev||y||(K=E,K="/index"===K?"/":K);let L=!0===z.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await z.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})},33873:a=>{a.exports=require("path")},41723:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{DQ:()=>o,Dg:()=>q,Fs:()=>m,R5:()=>r,Ws:()=>p,Yr:()=>t,bQ:()=>s,fN:()=>n,oI:()=>l});var e=c(4785),f=c(20903),g=a([f]);function h(a){return{...a,is_active:(0,e.J2)(a.is_active),created_at:(0,e.pC)(a.created_at)??new Date(0).toISOString(),updated_at:(0,e.pC)(a.updated_at)??new Date(0).toISOString()}}function i(a){return null==a?null:"string"==typeof a?a:JSON.stringify(a)}async function j(a,b,c){for(let d=0;d<c.length;d+=1){let e=c[d];await a.query("INSERT INTO workflow_nodes (workflow_id, step_order, node_type, title, instruction, instruction_id, loop_back_to, auto_advance, credential_id, hitl, visual_selection, credential_requirement) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)",[b,d+1,(e.node_type??"action").trim(),(e.title??"").trim(),(e.instruction??"").trim(),e.instruction_id??null,e.loop_back_to??null,(e.node_type??"action")==="action"?1:"gate"===e.node_type?0:+!!e.auto_advance,e.credential_id??null,e.hitl??!1,"gate"===e.node_type&&(e.visual_selection??!1),i(e.credential_requirement)])}}async function k(a,b){let c=await a.query("SELECT * FROM workflows WHERE id = $1",[b]);return c.rows[0]?h(c.rows[0]):null}async function l(a){let b=[a.filterSql],c=[...a.filterParams];a.includeInactive||b.push("w.is_active = TRUE"),void 0!==a.folderId&&(c.push(a.folderId),b.push(`w.folder_id IN (
1
+ "use strict";(()=>{var a={};a.id=1850,a.ids=[1850],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31668:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(96300),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/workflows/[id]/activate/route",pathname:"/api/workflows/[id]/activate",filename:"route",bundlePath:"app/api/workflows/[id]/activate/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/api/workflows/[id]/activate/route.ts",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/workflows/[id]/activate/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||z.isDev||y||(K=E,K="/index"===K?"/":K);let L=!0===z.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await z.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})},33873:a=>{a.exports=require("path")},41723:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{C0:()=>w,DQ:()=>q,Dg:()=>s,Fs:()=>o,R5:()=>t,Ws:()=>r,Yr:()=>v,bQ:()=>u,fN:()=>p,oI:()=>n});var e=c(4785),f=c(20903),g=a([f]);f=(g.then?(await g)():g)[0];class w extends Error{constructor(a){super(`Cannot remove workflow node(s) ${a.join(", ")} because task history still references them. Publish a new version instead, or restore the removed node(s).`),this.code="WORKFLOW_NODE_IN_USE",this.referencedNodeIds=a}}function h(a){let b=(a.node_type??"action").trim();return"action"===b?1:"gate"===b?0:+!!a.auto_advance}function i(a){return{...a,is_active:(0,e.J2)(a.is_active),created_at:(0,e.pC)(a.created_at)??new Date(0).toISOString(),updated_at:(0,e.pC)(a.updated_at)??new Date(0).toISOString()}}function j(a){return null==a?null:"string"==typeof a?a:JSON.stringify(a)}async function k(a,b,c){for(let d=0;d<c.length;d+=1){let e=c[d];await a.query("INSERT INTO workflow_nodes (workflow_id, step_order, node_type, title, instruction, instruction_id, loop_back_to, auto_advance, credential_id, hitl, visual_selection, credential_requirement) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)",[b,d+1,(e.node_type??"action").trim(),(e.title??"").trim(),(e.instruction??"").trim(),e.instruction_id??null,e.loop_back_to??null,h(e),e.credential_id??null,e.hitl??!1,"gate"===e.node_type&&(e.visual_selection??!1),j(e.credential_requirement)])}}async function l(a,b,c){let d=await a.query("SELECT id FROM workflow_nodes WHERE workflow_id = $1",[b]),e=new Set(d.rows.map(a=>a.id)),f=new Set;for(let a of c)"number"==typeof a.id&&e.has(a.id)&&f.add(a.id);let g=Array.from(e).filter(a=>!f.has(a));if(g.length>0){let b=g.map((a,b)=>`$${b+1}`).join(","),c=await a.query(`SELECT DISTINCT node_id FROM task_logs WHERE node_id IN (${b})`,g);if(c.rows.length>0)throw new w(c.rows.map(a=>Number(a.node_id)))}for(let d=0;d<c.length;d+=1){let f=c[d],g=d+1,i={node_type:(f.node_type??"action").trim(),title:(f.title??"").trim(),instruction:(f.instruction??"").trim(),instruction_id:f.instruction_id??null,loop_back_to:f.loop_back_to??null,auto_advance:h(f),credential_id:f.credential_id??null,hitl:f.hitl??!1,visual_selection:"gate"===f.node_type&&(f.visual_selection??!1),credential_requirement:j(f.credential_requirement)};"number"==typeof f.id&&e.has(f.id)?await a.query("UPDATE workflow_nodes SET step_order = $1, node_type = $2, title = $3, instruction = $4, instruction_id = $5, loop_back_to = $6, auto_advance = $7, credential_id = $8, hitl = $9, visual_selection = $10, credential_requirement = $11 WHERE id = $12",[g,i.node_type,i.title,i.instruction,i.instruction_id,i.loop_back_to,i.auto_advance,i.credential_id,i.hitl,i.visual_selection,i.credential_requirement,f.id]):await a.query("INSERT INTO workflow_nodes (workflow_id, step_order, node_type, title, instruction, instruction_id, loop_back_to, auto_advance, credential_id, hitl, visual_selection, credential_requirement) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)",[b,g,i.node_type,i.title,i.instruction,i.instruction_id,i.loop_back_to,i.auto_advance,i.credential_id,i.hitl,i.visual_selection,i.credential_requirement])}if(g.length>0){let b=g.map((a,b)=>`$${b+1}`).join(",");await a.query(`DELETE FROM workflow_nodes WHERE id IN (${b})`,g)}}async function m(a,b){let c=await a.query("SELECT * FROM workflows WHERE id = $1",[b]);return c.rows[0]?i(c.rows[0]):null}async function n(a){let b=[a.filterSql],c=[...a.filterParams];a.includeInactive||b.push("w.is_active = TRUE"),void 0!==a.folderId&&(c.push(a.folderId),b.push(`w.folder_id IN (
2
2
  WITH RECURSIVE ftree AS (
3
3
  SELECT id FROM folders WHERE id = $${c.length}
4
4
  UNION ALL
5
5
  SELECT f.id FROM folders f JOIN ftree ON f.parent_id = ftree.id
6
6
  )
7
7
  SELECT id FROM ftree
8
- )`)),a.q&&(c.push(`%${a.q}%`),b.push(`LOWER(w.title) LIKE LOWER($${c.length})`));let d=await (0,f.P)(`SELECT w.* FROM workflows w WHERE ${b.join(" AND ")} ORDER BY w.updated_at DESC`,c);return Promise.all(d.map(async b=>{let c=h(b);return{...c,nodes:a.slim?await (0,f.fl)(c.id):await (0,f.UZ)(c.id)}}))}async function m(a){let b=await (0,f.Zy)("SELECT id FROM folders WHERE owner_id = $1 AND is_system = true AND name = 'My Workspace' LIMIT 1",[a]);return b?.id??null}async function n(a){let b=await (0,f.ro)(async b=>{let c=await (0,f.YW)(`INSERT INTO workflows (
8
+ )`)),a.q&&(c.push(`%${a.q}%`),b.push(`LOWER(w.title) LIKE LOWER($${c.length})`));let d=await (0,f.P)(`SELECT w.* FROM workflows w WHERE ${b.join(" AND ")} ORDER BY w.updated_at DESC`,c);return Promise.all(d.map(async b=>{let c=i(b);return{...c,nodes:a.slim?await (0,f.fl)(c.id):await (0,f.UZ)(c.id)}}))}async function o(a){let b=await (0,f.Zy)("SELECT id FROM folders WHERE owner_id = $1 AND is_system = true AND name = 'My Workspace' LIMIT 1",[a]);return b?.id??null}async function p(a){let b=await (0,f.ro)(async b=>{let c=await (0,f.YW)(`INSERT INTO workflows (
9
9
  title, description, version, parent_workflow_id,
10
10
  evaluation_contract, owner_id, folder_id
11
11
  )
12
- VALUES ($1, $2, $3, $4, $5, $6, $7)`,[a.title,a.description,a.version,a.parentWorkflowId,a.evaluationContract,a.ownerId,a.folderId],b);return await b.query("UPDATE workflows SET family_root_id = $1 WHERE id = $1",[c]),Array.isArray(a.nodes)&&await j(b,c,a.nodes),c}),c=await r(b);if(!c)throw Error("Failed to load created workflow");return{...c,nodes:await (0,f.UZ)(b)}}async function o(a){let b=await (0,f.ro)(async b=>{if(Array.isArray(a.nodes)&&a.createNewVersion){let c=function(a){let b=a.trim();if(!b)return"1.0";let c=b.match(/^(\d+(?:\.\d+)*)(.*)$/);if(!c)return"1.0";let d=c[1],e=c[2],f=d.split("."),g=Number.parseInt(f[f.length-1]??"0",10);return Number.isNaN(g)?"1.0":(f[f.length-1]=String(g+1),f.join(".")+e)}(a.existing.version),d=void 0===a.evaluationContract?i(a.existing.evaluation_contract):i(a.evaluationContract);await b.query(`UPDATE workflows SET is_active = FALSE, updated_at = $2
12
+ VALUES ($1, $2, $3, $4, $5, $6, $7)`,[a.title,a.description,a.version,a.parentWorkflowId,a.evaluationContract,a.ownerId,a.folderId],b);return await b.query("UPDATE workflows SET family_root_id = $1 WHERE id = $1",[c]),Array.isArray(a.nodes)&&await k(b,c,a.nodes),c}),c=await t(b);if(!c)throw Error("Failed to load created workflow");return{...c,nodes:await (0,f.UZ)(b)}}async function q(a){let b=await (0,f.ro)(async b=>{if(Array.isArray(a.nodes)&&a.createNewVersion){let c=function(a){let b=a.trim();if(!b)return"1.0";let c=b.match(/^(\d+(?:\.\d+)*)(.*)$/);if(!c)return"1.0";let d=c[1],e=c[2],f=d.split("."),g=Number.parseInt(f[f.length-1]??"0",10);return Number.isNaN(g)?"1.0":(f[f.length-1]=String(g+1),f.join(".")+e)}(a.existing.version),d=void 0===a.evaluationContract?j(a.existing.evaluation_contract):j(a.evaluationContract);await b.query(`UPDATE workflows SET is_active = FALSE, updated_at = $2
13
13
  WHERE family_root_id = $1 AND is_active = TRUE`,[a.existing.family_root_id,new Date().toISOString()]);let e=await (0,f.YW)(`INSERT INTO workflows
14
14
  (title, description, version, parent_workflow_id, family_root_id,
15
15
  is_active, evaluation_contract, owner_id, folder_id)
16
- VALUES ($1, $2, $3, $4, $5, TRUE, $6, $7, $8)`,[(a.title??a.existing.title).trim(),(a.description??a.existing.description).trim(),c,a.workflowId,a.existing.family_root_id,d,a.existing.owner_id,a.existing.folder_id],b);return await j(b,e,a.nodes??[]),e}let c="string"==typeof a.version&&a.version.trim()?a.version.trim():a.existing.version,d=void 0===a.evaluationContract?i(a.existing.evaluation_contract):i(a.evaluationContract);return await b.query("UPDATE workflows SET title = $1, description = $2, version = $3, evaluation_contract = $4, updated_at = $5 WHERE id = $6",[(a.title??a.existing.title).trim(),(a.description??a.existing.description).trim(),c,d,new Date().toISOString(),a.workflowId]),Array.isArray(a.nodes)&&(await b.query("DELETE FROM workflow_nodes WHERE workflow_id = $1",[a.workflowId]),await j(b,a.workflowId,a.nodes)),a.workflowId}),c=await r(b);if(!c)throw Error("Failed to load updated workflow");return{...c,nodes:await (0,f.UZ)(b)}}async function p(a){await (0,f.g7)("UPDATE workflows SET folder_id = $1, updated_at = $2 WHERE id = $3",[a.folderId,new Date().toISOString(),a.workflowId])}async function q(a){await (0,f.g7)("DELETE FROM workflows WHERE id = $1",[a])}async function r(a){let b=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[a]);return b?h(b):null}async function s(a){return(0,f.ro)(async b=>{await b.query(`UPDATE workflows SET is_active = FALSE, updated_at = $2
17
- WHERE family_root_id = $1 AND is_active = TRUE`,[a.family_root_id,new Date().toISOString()]),await b.query("UPDATE workflows SET is_active = TRUE, updated_at = $2 WHERE id = $1",[a.id,new Date().toISOString()]);let c=await k(b,a.id);if(!c)throw Error("Failed to load activated workflow");return c})}async function t(a){await (0,f.g7)("UPDATE workflows SET owner_id = $1, updated_at = $2 WHERE id = $3",[a.newOwnerId,new Date().toISOString(),a.workflowId]);let b=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[a.workflowId]);return b?h(b):null}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{a.exports=import("pg")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},93139:a=>{a.exports=import("bcryptjs")},96300:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>k});var e=c(23211),f=c(20903),g=c(1800),h=c(13240),i=c(41723),j=a([f,g,h,i]);[f,g,h,i]=j.then?(await j)():j;let k=(0,g.ru)("workflows:update",async(a,b,{params:c})=>{let{id:d}=await c,g=Number(d),j=await (0,i.R5)(g);if(!j){let a=(0,f.yj)("NOT_FOUND","워크플로를 찾을 수 없습니다",404);return e.NextResponse.json(a.body,{status:a.status})}if(!await (0,h.p2)(b,j)){let a=(0,f.yj)("OWNERSHIP_REQUIRED","편집 권한 없음",403);return e.NextResponse.json(a.body,{status:a.status})}if(j.is_active){let a=(0,f.iA)({id:j.id,family_root_id:j.family_root_id,is_active:!0,already_active:!0});return e.NextResponse.json(a.body,{status:a.status})}let k=await (0,i.bQ)(j),l=(0,f.iA)({id:k.id,family_root_id:k.family_root_id,is_active:k.is_active,already_active:!1});return e.NextResponse.json(l.body,{status:l.status})});d()}catch(a){d(a)}})}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[3445,7111,1813,859,7945],()=>b(b.s=31668));module.exports=c})();
16
+ VALUES ($1, $2, $3, $4, $5, TRUE, $6, $7, $8)`,[(a.title??a.existing.title).trim(),(a.description??a.existing.description).trim(),c,a.workflowId,a.existing.family_root_id,d,a.existing.owner_id,a.existing.folder_id],b);return await k(b,e,a.nodes??[]),e}let c="string"==typeof a.version&&a.version.trim()?a.version.trim():a.existing.version,d=void 0===a.evaluationContract?j(a.existing.evaluation_contract):j(a.evaluationContract);return await b.query("UPDATE workflows SET title = $1, description = $2, version = $3, evaluation_contract = $4, updated_at = $5 WHERE id = $6",[(a.title??a.existing.title).trim(),(a.description??a.existing.description).trim(),c,d,new Date().toISOString(),a.workflowId]),Array.isArray(a.nodes)&&await l(b,a.workflowId,a.nodes),a.workflowId}),c=await t(b);if(!c)throw Error("Failed to load updated workflow");return{...c,nodes:await (0,f.UZ)(b)}}async function r(a){await (0,f.g7)("UPDATE workflows SET folder_id = $1, updated_at = $2 WHERE id = $3",[a.folderId,new Date().toISOString(),a.workflowId])}async function s(a){await (0,f.g7)("DELETE FROM workflows WHERE id = $1",[a])}async function t(a){let b=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[a]);return b?i(b):null}async function u(a){return(0,f.ro)(async b=>{await b.query(`UPDATE workflows SET is_active = FALSE, updated_at = $2
17
+ WHERE family_root_id = $1 AND is_active = TRUE`,[a.family_root_id,new Date().toISOString()]),await b.query("UPDATE workflows SET is_active = TRUE, updated_at = $2 WHERE id = $1",[a.id,new Date().toISOString()]);let c=await m(b,a.id);if(!c)throw Error("Failed to load activated workflow");return c})}async function v(a){await (0,f.g7)("UPDATE workflows SET owner_id = $1, updated_at = $2 WHERE id = $3",[a.newOwnerId,new Date().toISOString(),a.workflowId]);let b=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[a.workflowId]);return b?i(b):null}d()}catch(a){d(a)}})},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{a.exports=import("pg")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},93139:a=>{a.exports=import("bcryptjs")},96300:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>k});var e=c(23211),f=c(20903),g=c(1800),h=c(13240),i=c(41723),j=a([f,g,h,i]);[f,g,h,i]=j.then?(await j)():j;let k=(0,g.ru)("workflows:update",async(a,b,{params:c})=>{let{id:d}=await c,g=Number(d),j=await (0,i.R5)(g);if(!j){let a=(0,f.yj)("NOT_FOUND","워크플로를 찾을 수 없습니다",404);return e.NextResponse.json(a.body,{status:a.status})}if(!await (0,h.p2)(b,j)){let a=(0,f.yj)("OWNERSHIP_REQUIRED","편집 권한 없음",403);return e.NextResponse.json(a.body,{status:a.status})}if(j.is_active){let a=(0,f.iA)({id:j.id,family_root_id:j.family_root_id,is_active:!0,already_active:!0});return e.NextResponse.json(a.body,{status:a.status})}let k=await (0,i.bQ)(j),l=(0,f.iA)({id:k.id,family_root_id:k.family_root_id,is_active:k.is_active,already_active:!1});return e.NextResponse.json(l.body,{status:l.status})});d()}catch(a){d(a)}})}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[3445,7111,1813,859,7945],()=>b(b.s=31668));module.exports=c})();
@@ -1,17 +1,17 @@
1
- "use strict";(()=>{var a={};a.id=2994,a.ids=[2994],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},16394:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(21706),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/workflows/[id]/route",pathname:"/api/workflows/[id]",filename:"route",bundlePath:"app/api/workflows/[id]/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/api/workflows/[id]/route.ts",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/workflows/[id]/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||z.isDev||y||(K=E,K="/index"===K?"/":K);let L=!0===z.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await z.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})},21706:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DELETE:()=>o,GET:()=>l,PATCH:()=>n,PUT:()=>m});var e=c(23211),f=c(20903),g=c(1800),h=c(13240),i=c(86721),j=c(41723),k=a([f,g,h,i,j]);[f,g,h,i,j]=k.then?(await k)():k;let l=(0,i.P)({permission:"workflows:read",table:"workflows",check:h.Tt,notFoundMessage:"워크플로를 찾을 수 없습니다",forbiddenMessage:"접근 권한 없음",handler:async({resource:a})=>{let b=(0,f.iA)({...a,nodes:await (0,f.UZ)(a.id)});return e.NextResponse.json(b.body,{status:b.status})}}),m=(0,g.ru)("workflows:update",async(a,b,{params:c})=>{let{id:d}=await c,{title:g,description:k,nodes:l,version:m,evaluation_contract:n,create_new_version:o}=await a.json(),p=Number(d),{resource:q,response:r}=await (0,i.O)({table:"workflows",id:p,user:b,check:h.p2,notFoundMessage:"워크플로를 찾을 수 없습니다",forbiddenMessage:"편집 권한 없음"});if(r)return r;let s=await (0,j.DQ)({existing:q,workflowId:p,title:g,description:k,nodes:Array.isArray(l)?l:void 0,version:m,evaluationContract:n,createNewVersion:!0===o}),t=(0,f.iA)(s);return e.NextResponse.json(t.body,{status:t.status})}),n=(0,g.ru)("workflows:update",async(a,b,{params:c})=>{let{id:d}=await c,g=await a.json(),k=Number(d),{response:l}=await (0,i.O)({table:"workflows",id:k,user:b,check:h.p2,notFoundMessage:"워크플로를 찾을 수 없습니다",forbiddenMessage:"편집 권한 없음"});if(l)return l;if("folder_id"in g){let a=null===g.folder_id?null:Number(g.folder_id);if(null!==a){let c=await (0,h.jl)(a);if(!c)return e.NextResponse.json({error:{code:"NOT_FOUND",message:"대상 폴더를 찾을 수 없습니다"}},{status:404});if(!await (0,h.tq)(b,c))return e.NextResponse.json({error:{code:"FORBIDDEN",message:"대상 폴더에 대한 편집 권한이 없습니다"}},{status:403})}await (0,j.Ws)({workflowId:k,folderId:a})}let m=(0,f.iA)({id:k,updated:!0});return e.NextResponse.json(m.body,{status:m.status})}),o=(0,i.P)({permission:"workflows:update",table:"workflows",check:h.W9,notFoundMessage:"워크플로를 찾을 수 없습니다",forbiddenMessage:"삭제 권한 없음",handler:async({resource:a})=>{await (0,j.Dg)(a.id);let b=(0,f.iA)({id:a.id,deleted:!0});return e.NextResponse.json(b.body,{status:b.status})}});d()}catch(a){d(a)}})},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},41723:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{DQ:()=>o,Dg:()=>q,Fs:()=>m,R5:()=>r,Ws:()=>p,Yr:()=>t,bQ:()=>s,fN:()=>n,oI:()=>l});var e=c(4785),f=c(20903),g=a([f]);function h(a){return{...a,is_active:(0,e.J2)(a.is_active),created_at:(0,e.pC)(a.created_at)??new Date(0).toISOString(),updated_at:(0,e.pC)(a.updated_at)??new Date(0).toISOString()}}function i(a){return null==a?null:"string"==typeof a?a:JSON.stringify(a)}async function j(a,b,c){for(let d=0;d<c.length;d+=1){let e=c[d];await a.query("INSERT INTO workflow_nodes (workflow_id, step_order, node_type, title, instruction, instruction_id, loop_back_to, auto_advance, credential_id, hitl, visual_selection, credential_requirement) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)",[b,d+1,(e.node_type??"action").trim(),(e.title??"").trim(),(e.instruction??"").trim(),e.instruction_id??null,e.loop_back_to??null,(e.node_type??"action")==="action"?1:"gate"===e.node_type?0:+!!e.auto_advance,e.credential_id??null,e.hitl??!1,"gate"===e.node_type&&(e.visual_selection??!1),i(e.credential_requirement)])}}async function k(a,b){let c=await a.query("SELECT * FROM workflows WHERE id = $1",[b]);return c.rows[0]?h(c.rows[0]):null}async function l(a){let b=[a.filterSql],c=[...a.filterParams];a.includeInactive||b.push("w.is_active = TRUE"),void 0!==a.folderId&&(c.push(a.folderId),b.push(`w.folder_id IN (
1
+ "use strict";(()=>{var a={};a.id=2994,a.ids=[2994],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},16394:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(21706),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/workflows/[id]/route",pathname:"/api/workflows/[id]",filename:"route",bundlePath:"app/api/workflows/[id]/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/api/workflows/[id]/route.ts",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/workflows/[id]/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||z.isDev||y||(K=E,K="/index"===K?"/":K);let L=!0===z.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await z.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})},21706:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DELETE:()=>o,GET:()=>l,PATCH:()=>n,PUT:()=>m});var e=c(23211),f=c(20903),g=c(1800),h=c(13240),i=c(86721),j=c(41723),k=a([f,g,h,i,j]);[f,g,h,i,j]=k.then?(await k)():k;let l=(0,i.P)({permission:"workflows:read",table:"workflows",check:h.Tt,notFoundMessage:"워크플로를 찾을 수 없습니다",forbiddenMessage:"접근 권한 없음",handler:async({resource:a})=>{let b=(0,f.iA)({...a,nodes:await (0,f.UZ)(a.id)});return e.NextResponse.json(b.body,{status:b.status})}}),m=(0,g.ru)("workflows:update",async(a,b,{params:c})=>{let{id:d}=await c,{title:g,description:k,nodes:l,version:m,evaluation_contract:n,create_new_version:o}=await a.json(),p=Number(d),{resource:q,response:r}=await (0,i.O)({table:"workflows",id:p,user:b,check:h.p2,notFoundMessage:"워크플로를 찾을 수 없습니다",forbiddenMessage:"편집 권한 없음"});if(r)return r;try{let a=await (0,j.DQ)({existing:q,workflowId:p,title:g,description:k,nodes:Array.isArray(l)?l:void 0,version:m,evaluationContract:n,createNewVersion:!0===o}),b=(0,f.iA)(a);return e.NextResponse.json(b.body,{status:b.status})}catch(a){if(a instanceof j.C0)return e.NextResponse.json({error:{code:a.code,message:a.message,referenced_node_ids:a.referencedNodeIds}},{status:409});throw a}}),n=(0,g.ru)("workflows:update",async(a,b,{params:c})=>{let{id:d}=await c,g=await a.json(),k=Number(d),{response:l}=await (0,i.O)({table:"workflows",id:k,user:b,check:h.p2,notFoundMessage:"워크플로를 찾을 수 없습니다",forbiddenMessage:"편집 권한 없음"});if(l)return l;if("folder_id"in g){let a=null===g.folder_id?null:Number(g.folder_id);if(null!==a){let c=await (0,h.jl)(a);if(!c)return e.NextResponse.json({error:{code:"NOT_FOUND",message:"대상 폴더를 찾을 수 없습니다"}},{status:404});if(!await (0,h.tq)(b,c))return e.NextResponse.json({error:{code:"FORBIDDEN",message:"대상 폴더에 대한 편집 권한이 없습니다"}},{status:403})}await (0,j.Ws)({workflowId:k,folderId:a})}let m=(0,f.iA)({id:k,updated:!0});return e.NextResponse.json(m.body,{status:m.status})}),o=(0,i.P)({permission:"workflows:update",table:"workflows",check:h.W9,notFoundMessage:"워크플로를 찾을 수 없습니다",forbiddenMessage:"삭제 권한 없음",handler:async({resource:a})=>{await (0,j.Dg)(a.id);let b=(0,f.iA)({id:a.id,deleted:!0});return e.NextResponse.json(b.body,{status:b.status})}});d()}catch(a){d(a)}})},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},41723:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{C0:()=>w,DQ:()=>q,Dg:()=>s,Fs:()=>o,R5:()=>t,Ws:()=>r,Yr:()=>v,bQ:()=>u,fN:()=>p,oI:()=>n});var e=c(4785),f=c(20903),g=a([f]);f=(g.then?(await g)():g)[0];class w extends Error{constructor(a){super(`Cannot remove workflow node(s) ${a.join(", ")} because task history still references them. Publish a new version instead, or restore the removed node(s).`),this.code="WORKFLOW_NODE_IN_USE",this.referencedNodeIds=a}}function h(a){let b=(a.node_type??"action").trim();return"action"===b?1:"gate"===b?0:+!!a.auto_advance}function i(a){return{...a,is_active:(0,e.J2)(a.is_active),created_at:(0,e.pC)(a.created_at)??new Date(0).toISOString(),updated_at:(0,e.pC)(a.updated_at)??new Date(0).toISOString()}}function j(a){return null==a?null:"string"==typeof a?a:JSON.stringify(a)}async function k(a,b,c){for(let d=0;d<c.length;d+=1){let e=c[d];await a.query("INSERT INTO workflow_nodes (workflow_id, step_order, node_type, title, instruction, instruction_id, loop_back_to, auto_advance, credential_id, hitl, visual_selection, credential_requirement) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)",[b,d+1,(e.node_type??"action").trim(),(e.title??"").trim(),(e.instruction??"").trim(),e.instruction_id??null,e.loop_back_to??null,h(e),e.credential_id??null,e.hitl??!1,"gate"===e.node_type&&(e.visual_selection??!1),j(e.credential_requirement)])}}async function l(a,b,c){let d=await a.query("SELECT id FROM workflow_nodes WHERE workflow_id = $1",[b]),e=new Set(d.rows.map(a=>a.id)),f=new Set;for(let a of c)"number"==typeof a.id&&e.has(a.id)&&f.add(a.id);let g=Array.from(e).filter(a=>!f.has(a));if(g.length>0){let b=g.map((a,b)=>`$${b+1}`).join(","),c=await a.query(`SELECT DISTINCT node_id FROM task_logs WHERE node_id IN (${b})`,g);if(c.rows.length>0)throw new w(c.rows.map(a=>Number(a.node_id)))}for(let d=0;d<c.length;d+=1){let f=c[d],g=d+1,i={node_type:(f.node_type??"action").trim(),title:(f.title??"").trim(),instruction:(f.instruction??"").trim(),instruction_id:f.instruction_id??null,loop_back_to:f.loop_back_to??null,auto_advance:h(f),credential_id:f.credential_id??null,hitl:f.hitl??!1,visual_selection:"gate"===f.node_type&&(f.visual_selection??!1),credential_requirement:j(f.credential_requirement)};"number"==typeof f.id&&e.has(f.id)?await a.query("UPDATE workflow_nodes SET step_order = $1, node_type = $2, title = $3, instruction = $4, instruction_id = $5, loop_back_to = $6, auto_advance = $7, credential_id = $8, hitl = $9, visual_selection = $10, credential_requirement = $11 WHERE id = $12",[g,i.node_type,i.title,i.instruction,i.instruction_id,i.loop_back_to,i.auto_advance,i.credential_id,i.hitl,i.visual_selection,i.credential_requirement,f.id]):await a.query("INSERT INTO workflow_nodes (workflow_id, step_order, node_type, title, instruction, instruction_id, loop_back_to, auto_advance, credential_id, hitl, visual_selection, credential_requirement) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)",[b,g,i.node_type,i.title,i.instruction,i.instruction_id,i.loop_back_to,i.auto_advance,i.credential_id,i.hitl,i.visual_selection,i.credential_requirement])}if(g.length>0){let b=g.map((a,b)=>`$${b+1}`).join(",");await a.query(`DELETE FROM workflow_nodes WHERE id IN (${b})`,g)}}async function m(a,b){let c=await a.query("SELECT * FROM workflows WHERE id = $1",[b]);return c.rows[0]?i(c.rows[0]):null}async function n(a){let b=[a.filterSql],c=[...a.filterParams];a.includeInactive||b.push("w.is_active = TRUE"),void 0!==a.folderId&&(c.push(a.folderId),b.push(`w.folder_id IN (
2
2
  WITH RECURSIVE ftree AS (
3
3
  SELECT id FROM folders WHERE id = $${c.length}
4
4
  UNION ALL
5
5
  SELECT f.id FROM folders f JOIN ftree ON f.parent_id = ftree.id
6
6
  )
7
7
  SELECT id FROM ftree
8
- )`)),a.q&&(c.push(`%${a.q}%`),b.push(`LOWER(w.title) LIKE LOWER($${c.length})`));let d=await (0,f.P)(`SELECT w.* FROM workflows w WHERE ${b.join(" AND ")} ORDER BY w.updated_at DESC`,c);return Promise.all(d.map(async b=>{let c=h(b);return{...c,nodes:a.slim?await (0,f.fl)(c.id):await (0,f.UZ)(c.id)}}))}async function m(a){let b=await (0,f.Zy)("SELECT id FROM folders WHERE owner_id = $1 AND is_system = true AND name = 'My Workspace' LIMIT 1",[a]);return b?.id??null}async function n(a){let b=await (0,f.ro)(async b=>{let c=await (0,f.YW)(`INSERT INTO workflows (
8
+ )`)),a.q&&(c.push(`%${a.q}%`),b.push(`LOWER(w.title) LIKE LOWER($${c.length})`));let d=await (0,f.P)(`SELECT w.* FROM workflows w WHERE ${b.join(" AND ")} ORDER BY w.updated_at DESC`,c);return Promise.all(d.map(async b=>{let c=i(b);return{...c,nodes:a.slim?await (0,f.fl)(c.id):await (0,f.UZ)(c.id)}}))}async function o(a){let b=await (0,f.Zy)("SELECT id FROM folders WHERE owner_id = $1 AND is_system = true AND name = 'My Workspace' LIMIT 1",[a]);return b?.id??null}async function p(a){let b=await (0,f.ro)(async b=>{let c=await (0,f.YW)(`INSERT INTO workflows (
9
9
  title, description, version, parent_workflow_id,
10
10
  evaluation_contract, owner_id, folder_id
11
11
  )
12
- VALUES ($1, $2, $3, $4, $5, $6, $7)`,[a.title,a.description,a.version,a.parentWorkflowId,a.evaluationContract,a.ownerId,a.folderId],b);return await b.query("UPDATE workflows SET family_root_id = $1 WHERE id = $1",[c]),Array.isArray(a.nodes)&&await j(b,c,a.nodes),c}),c=await r(b);if(!c)throw Error("Failed to load created workflow");return{...c,nodes:await (0,f.UZ)(b)}}async function o(a){let b=await (0,f.ro)(async b=>{if(Array.isArray(a.nodes)&&a.createNewVersion){let c=function(a){let b=a.trim();if(!b)return"1.0";let c=b.match(/^(\d+(?:\.\d+)*)(.*)$/);if(!c)return"1.0";let d=c[1],e=c[2],f=d.split("."),g=Number.parseInt(f[f.length-1]??"0",10);return Number.isNaN(g)?"1.0":(f[f.length-1]=String(g+1),f.join(".")+e)}(a.existing.version),d=void 0===a.evaluationContract?i(a.existing.evaluation_contract):i(a.evaluationContract);await b.query(`UPDATE workflows SET is_active = FALSE, updated_at = $2
12
+ VALUES ($1, $2, $3, $4, $5, $6, $7)`,[a.title,a.description,a.version,a.parentWorkflowId,a.evaluationContract,a.ownerId,a.folderId],b);return await b.query("UPDATE workflows SET family_root_id = $1 WHERE id = $1",[c]),Array.isArray(a.nodes)&&await k(b,c,a.nodes),c}),c=await t(b);if(!c)throw Error("Failed to load created workflow");return{...c,nodes:await (0,f.UZ)(b)}}async function q(a){let b=await (0,f.ro)(async b=>{if(Array.isArray(a.nodes)&&a.createNewVersion){let c=function(a){let b=a.trim();if(!b)return"1.0";let c=b.match(/^(\d+(?:\.\d+)*)(.*)$/);if(!c)return"1.0";let d=c[1],e=c[2],f=d.split("."),g=Number.parseInt(f[f.length-1]??"0",10);return Number.isNaN(g)?"1.0":(f[f.length-1]=String(g+1),f.join(".")+e)}(a.existing.version),d=void 0===a.evaluationContract?j(a.existing.evaluation_contract):j(a.evaluationContract);await b.query(`UPDATE workflows SET is_active = FALSE, updated_at = $2
13
13
  WHERE family_root_id = $1 AND is_active = TRUE`,[a.existing.family_root_id,new Date().toISOString()]);let e=await (0,f.YW)(`INSERT INTO workflows
14
14
  (title, description, version, parent_workflow_id, family_root_id,
15
15
  is_active, evaluation_contract, owner_id, folder_id)
16
- VALUES ($1, $2, $3, $4, $5, TRUE, $6, $7, $8)`,[(a.title??a.existing.title).trim(),(a.description??a.existing.description).trim(),c,a.workflowId,a.existing.family_root_id,d,a.existing.owner_id,a.existing.folder_id],b);return await j(b,e,a.nodes??[]),e}let c="string"==typeof a.version&&a.version.trim()?a.version.trim():a.existing.version,d=void 0===a.evaluationContract?i(a.existing.evaluation_contract):i(a.evaluationContract);return await b.query("UPDATE workflows SET title = $1, description = $2, version = $3, evaluation_contract = $4, updated_at = $5 WHERE id = $6",[(a.title??a.existing.title).trim(),(a.description??a.existing.description).trim(),c,d,new Date().toISOString(),a.workflowId]),Array.isArray(a.nodes)&&(await b.query("DELETE FROM workflow_nodes WHERE workflow_id = $1",[a.workflowId]),await j(b,a.workflowId,a.nodes)),a.workflowId}),c=await r(b);if(!c)throw Error("Failed to load updated workflow");return{...c,nodes:await (0,f.UZ)(b)}}async function p(a){await (0,f.g7)("UPDATE workflows SET folder_id = $1, updated_at = $2 WHERE id = $3",[a.folderId,new Date().toISOString(),a.workflowId])}async function q(a){await (0,f.g7)("DELETE FROM workflows WHERE id = $1",[a])}async function r(a){let b=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[a]);return b?h(b):null}async function s(a){return(0,f.ro)(async b=>{await b.query(`UPDATE workflows SET is_active = FALSE, updated_at = $2
17
- WHERE family_root_id = $1 AND is_active = TRUE`,[a.family_root_id,new Date().toISOString()]),await b.query("UPDATE workflows SET is_active = TRUE, updated_at = $2 WHERE id = $1",[a.id,new Date().toISOString()]);let c=await k(b,a.id);if(!c)throw Error("Failed to load activated workflow");return c})}async function t(a){await (0,f.g7)("UPDATE workflows SET owner_id = $1, updated_at = $2 WHERE id = $3",[a.newOwnerId,new Date().toISOString(),a.workflowId]);let b=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[a.workflowId]);return b?h(b):null}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{a.exports=import("pg")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},86721:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{O:()=>i,P:()=>j});var e=c(23211),f=c(20903),g=c(1800),h=a([f,g]);async function i(a){let b=await (0,f.Zy)(`SELECT * FROM ${a.table} WHERE id = $1`,[Number(a.id)]),c=b?(0,f.U9)(a.table,b):void 0;if(!c){let b=(0,f.yj)(a.notFoundCode??"NOT_FOUND",a.notFoundMessage,404);return{resource:null,response:e.NextResponse.json(b.body,{status:b.status})}}if(!await a.check(a.user,c)){let b=(0,f.yj)(a.forbiddenCode??"OWNERSHIP_REQUIRED",a.forbiddenMessage,403);return{resource:null,response:e.NextResponse.json(b.body,{status:b.status})}}return{resource:c,response:null}}function j(a){return(0,g.ru)(a.permission,async(b,c,{params:d})=>{let e=await d,{resource:f,response:g}=await i({table:a.table,id:e.id,user:c,check:a.check,notFoundCode:a.notFoundCode,notFoundMessage:a.notFoundMessage,forbiddenCode:a.forbiddenCode,forbiddenMessage:a.forbiddenMessage});return g||a.handler({resource:f,user:c,request:b,params:e})})}[f,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},87550:a=>{a.exports=require("better-sqlite3")},93139:a=>{a.exports=import("bcryptjs")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[3445,7111,1813,859,7945],()=>b(b.s=16394));module.exports=c})();
16
+ VALUES ($1, $2, $3, $4, $5, TRUE, $6, $7, $8)`,[(a.title??a.existing.title).trim(),(a.description??a.existing.description).trim(),c,a.workflowId,a.existing.family_root_id,d,a.existing.owner_id,a.existing.folder_id],b);return await k(b,e,a.nodes??[]),e}let c="string"==typeof a.version&&a.version.trim()?a.version.trim():a.existing.version,d=void 0===a.evaluationContract?j(a.existing.evaluation_contract):j(a.evaluationContract);return await b.query("UPDATE workflows SET title = $1, description = $2, version = $3, evaluation_contract = $4, updated_at = $5 WHERE id = $6",[(a.title??a.existing.title).trim(),(a.description??a.existing.description).trim(),c,d,new Date().toISOString(),a.workflowId]),Array.isArray(a.nodes)&&await l(b,a.workflowId,a.nodes),a.workflowId}),c=await t(b);if(!c)throw Error("Failed to load updated workflow");return{...c,nodes:await (0,f.UZ)(b)}}async function r(a){await (0,f.g7)("UPDATE workflows SET folder_id = $1, updated_at = $2 WHERE id = $3",[a.folderId,new Date().toISOString(),a.workflowId])}async function s(a){await (0,f.g7)("DELETE FROM workflows WHERE id = $1",[a])}async function t(a){let b=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[a]);return b?i(b):null}async function u(a){return(0,f.ro)(async b=>{await b.query(`UPDATE workflows SET is_active = FALSE, updated_at = $2
17
+ WHERE family_root_id = $1 AND is_active = TRUE`,[a.family_root_id,new Date().toISOString()]),await b.query("UPDATE workflows SET is_active = TRUE, updated_at = $2 WHERE id = $1",[a.id,new Date().toISOString()]);let c=await m(b,a.id);if(!c)throw Error("Failed to load activated workflow");return c})}async function v(a){await (0,f.g7)("UPDATE workflows SET owner_id = $1, updated_at = $2 WHERE id = $3",[a.newOwnerId,new Date().toISOString(),a.workflowId]);let b=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[a.workflowId]);return b?i(b):null}d()}catch(a){d(a)}})},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{a.exports=import("pg")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},86721:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{O:()=>i,P:()=>j});var e=c(23211),f=c(20903),g=c(1800),h=a([f,g]);async function i(a){let b=await (0,f.Zy)(`SELECT * FROM ${a.table} WHERE id = $1`,[Number(a.id)]),c=b?(0,f.U9)(a.table,b):void 0;if(!c){let b=(0,f.yj)(a.notFoundCode??"NOT_FOUND",a.notFoundMessage,404);return{resource:null,response:e.NextResponse.json(b.body,{status:b.status})}}if(!await a.check(a.user,c)){let b=(0,f.yj)(a.forbiddenCode??"OWNERSHIP_REQUIRED",a.forbiddenMessage,403);return{resource:null,response:e.NextResponse.json(b.body,{status:b.status})}}return{resource:c,response:null}}function j(a){return(0,g.ru)(a.permission,async(b,c,{params:d})=>{let e=await d,{resource:f,response:g}=await i({table:a.table,id:e.id,user:c,check:a.check,notFoundCode:a.notFoundCode,notFoundMessage:a.notFoundMessage,forbiddenCode:a.forbiddenCode,forbiddenMessage:a.forbiddenMessage});return g||a.handler({resource:f,user:c,request:b,params:e})})}[f,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},87550:a=>{a.exports=require("better-sqlite3")},93139:a=>{a.exports=import("bcryptjs")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[3445,7111,1813,859,7945],()=>b(b.s=16394));module.exports=c})();
@@ -1,17 +1,17 @@
1
- "use strict";(()=>{var a={};a.id=8256,a.ids=[8256],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},20506:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>l});var e=c(23211),f=c(20903),g=c(1800),h=c(13240),i=c(21199),j=c(41723),k=a([f,g,h,i,j]);[f,g,h,i,j]=k.then?(await k)():k;let l=(0,g.ru)("workflows:update",async(a,b,{params:c})=>{let{id:d}=await c,{new_owner_id:g}=await a.json();if("number"!=typeof g){let a=(0,f.yj)("VALIDATION_ERROR","new_owner_id required",400);return e.NextResponse.json(a.body,{status:a.status})}let k=await (0,j.R5)(Number(d));if(!k){let a=(0,f.yj)("NOT_FOUND","워크플로 없음",404);return e.NextResponse.json(a.body,{status:a.status})}if(!await (0,h.Py)(b,k)){let a=(0,f.yj)("OWNERSHIP_REQUIRED","이전 권한 없음",403);return e.NextResponse.json(a.body,{status:a.status})}if(!await (0,i.nC)(g)){let a=(0,f.yj)("NOT_FOUND","대상 사용자 없음",404);return e.NextResponse.json(a.body,{status:a.status})}let l=await (0,j.Yr)({workflowId:Number(d),newOwnerId:g}),m=(0,f.iA)(l);return e.NextResponse.json(m.body,{status:m.status})});d()}catch(a){d(a)}})},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},41723:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{DQ:()=>o,Dg:()=>q,Fs:()=>m,R5:()=>r,Ws:()=>p,Yr:()=>t,bQ:()=>s,fN:()=>n,oI:()=>l});var e=c(4785),f=c(20903),g=a([f]);function h(a){return{...a,is_active:(0,e.J2)(a.is_active),created_at:(0,e.pC)(a.created_at)??new Date(0).toISOString(),updated_at:(0,e.pC)(a.updated_at)??new Date(0).toISOString()}}function i(a){return null==a?null:"string"==typeof a?a:JSON.stringify(a)}async function j(a,b,c){for(let d=0;d<c.length;d+=1){let e=c[d];await a.query("INSERT INTO workflow_nodes (workflow_id, step_order, node_type, title, instruction, instruction_id, loop_back_to, auto_advance, credential_id, hitl, visual_selection, credential_requirement) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)",[b,d+1,(e.node_type??"action").trim(),(e.title??"").trim(),(e.instruction??"").trim(),e.instruction_id??null,e.loop_back_to??null,(e.node_type??"action")==="action"?1:"gate"===e.node_type?0:+!!e.auto_advance,e.credential_id??null,e.hitl??!1,"gate"===e.node_type&&(e.visual_selection??!1),i(e.credential_requirement)])}}async function k(a,b){let c=await a.query("SELECT * FROM workflows WHERE id = $1",[b]);return c.rows[0]?h(c.rows[0]):null}async function l(a){let b=[a.filterSql],c=[...a.filterParams];a.includeInactive||b.push("w.is_active = TRUE"),void 0!==a.folderId&&(c.push(a.folderId),b.push(`w.folder_id IN (
1
+ "use strict";(()=>{var a={};a.id=8256,a.ids=[8256],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},20506:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>l});var e=c(23211),f=c(20903),g=c(1800),h=c(13240),i=c(21199),j=c(41723),k=a([f,g,h,i,j]);[f,g,h,i,j]=k.then?(await k)():k;let l=(0,g.ru)("workflows:update",async(a,b,{params:c})=>{let{id:d}=await c,{new_owner_id:g}=await a.json();if("number"!=typeof g){let a=(0,f.yj)("VALIDATION_ERROR","new_owner_id required",400);return e.NextResponse.json(a.body,{status:a.status})}let k=await (0,j.R5)(Number(d));if(!k){let a=(0,f.yj)("NOT_FOUND","워크플로 없음",404);return e.NextResponse.json(a.body,{status:a.status})}if(!await (0,h.Py)(b,k)){let a=(0,f.yj)("OWNERSHIP_REQUIRED","이전 권한 없음",403);return e.NextResponse.json(a.body,{status:a.status})}if(!await (0,i.nC)(g)){let a=(0,f.yj)("NOT_FOUND","대상 사용자 없음",404);return e.NextResponse.json(a.body,{status:a.status})}let l=await (0,j.Yr)({workflowId:Number(d),newOwnerId:g}),m=(0,f.iA)(l);return e.NextResponse.json(m.body,{status:m.status})});d()}catch(a){d(a)}})},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},41723:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{C0:()=>w,DQ:()=>q,Dg:()=>s,Fs:()=>o,R5:()=>t,Ws:()=>r,Yr:()=>v,bQ:()=>u,fN:()=>p,oI:()=>n});var e=c(4785),f=c(20903),g=a([f]);f=(g.then?(await g)():g)[0];class w extends Error{constructor(a){super(`Cannot remove workflow node(s) ${a.join(", ")} because task history still references them. Publish a new version instead, or restore the removed node(s).`),this.code="WORKFLOW_NODE_IN_USE",this.referencedNodeIds=a}}function h(a){let b=(a.node_type??"action").trim();return"action"===b?1:"gate"===b?0:+!!a.auto_advance}function i(a){return{...a,is_active:(0,e.J2)(a.is_active),created_at:(0,e.pC)(a.created_at)??new Date(0).toISOString(),updated_at:(0,e.pC)(a.updated_at)??new Date(0).toISOString()}}function j(a){return null==a?null:"string"==typeof a?a:JSON.stringify(a)}async function k(a,b,c){for(let d=0;d<c.length;d+=1){let e=c[d];await a.query("INSERT INTO workflow_nodes (workflow_id, step_order, node_type, title, instruction, instruction_id, loop_back_to, auto_advance, credential_id, hitl, visual_selection, credential_requirement) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)",[b,d+1,(e.node_type??"action").trim(),(e.title??"").trim(),(e.instruction??"").trim(),e.instruction_id??null,e.loop_back_to??null,h(e),e.credential_id??null,e.hitl??!1,"gate"===e.node_type&&(e.visual_selection??!1),j(e.credential_requirement)])}}async function l(a,b,c){let d=await a.query("SELECT id FROM workflow_nodes WHERE workflow_id = $1",[b]),e=new Set(d.rows.map(a=>a.id)),f=new Set;for(let a of c)"number"==typeof a.id&&e.has(a.id)&&f.add(a.id);let g=Array.from(e).filter(a=>!f.has(a));if(g.length>0){let b=g.map((a,b)=>`$${b+1}`).join(","),c=await a.query(`SELECT DISTINCT node_id FROM task_logs WHERE node_id IN (${b})`,g);if(c.rows.length>0)throw new w(c.rows.map(a=>Number(a.node_id)))}for(let d=0;d<c.length;d+=1){let f=c[d],g=d+1,i={node_type:(f.node_type??"action").trim(),title:(f.title??"").trim(),instruction:(f.instruction??"").trim(),instruction_id:f.instruction_id??null,loop_back_to:f.loop_back_to??null,auto_advance:h(f),credential_id:f.credential_id??null,hitl:f.hitl??!1,visual_selection:"gate"===f.node_type&&(f.visual_selection??!1),credential_requirement:j(f.credential_requirement)};"number"==typeof f.id&&e.has(f.id)?await a.query("UPDATE workflow_nodes SET step_order = $1, node_type = $2, title = $3, instruction = $4, instruction_id = $5, loop_back_to = $6, auto_advance = $7, credential_id = $8, hitl = $9, visual_selection = $10, credential_requirement = $11 WHERE id = $12",[g,i.node_type,i.title,i.instruction,i.instruction_id,i.loop_back_to,i.auto_advance,i.credential_id,i.hitl,i.visual_selection,i.credential_requirement,f.id]):await a.query("INSERT INTO workflow_nodes (workflow_id, step_order, node_type, title, instruction, instruction_id, loop_back_to, auto_advance, credential_id, hitl, visual_selection, credential_requirement) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)",[b,g,i.node_type,i.title,i.instruction,i.instruction_id,i.loop_back_to,i.auto_advance,i.credential_id,i.hitl,i.visual_selection,i.credential_requirement])}if(g.length>0){let b=g.map((a,b)=>`$${b+1}`).join(",");await a.query(`DELETE FROM workflow_nodes WHERE id IN (${b})`,g)}}async function m(a,b){let c=await a.query("SELECT * FROM workflows WHERE id = $1",[b]);return c.rows[0]?i(c.rows[0]):null}async function n(a){let b=[a.filterSql],c=[...a.filterParams];a.includeInactive||b.push("w.is_active = TRUE"),void 0!==a.folderId&&(c.push(a.folderId),b.push(`w.folder_id IN (
2
2
  WITH RECURSIVE ftree AS (
3
3
  SELECT id FROM folders WHERE id = $${c.length}
4
4
  UNION ALL
5
5
  SELECT f.id FROM folders f JOIN ftree ON f.parent_id = ftree.id
6
6
  )
7
7
  SELECT id FROM ftree
8
- )`)),a.q&&(c.push(`%${a.q}%`),b.push(`LOWER(w.title) LIKE LOWER($${c.length})`));let d=await (0,f.P)(`SELECT w.* FROM workflows w WHERE ${b.join(" AND ")} ORDER BY w.updated_at DESC`,c);return Promise.all(d.map(async b=>{let c=h(b);return{...c,nodes:a.slim?await (0,f.fl)(c.id):await (0,f.UZ)(c.id)}}))}async function m(a){let b=await (0,f.Zy)("SELECT id FROM folders WHERE owner_id = $1 AND is_system = true AND name = 'My Workspace' LIMIT 1",[a]);return b?.id??null}async function n(a){let b=await (0,f.ro)(async b=>{let c=await (0,f.YW)(`INSERT INTO workflows (
8
+ )`)),a.q&&(c.push(`%${a.q}%`),b.push(`LOWER(w.title) LIKE LOWER($${c.length})`));let d=await (0,f.P)(`SELECT w.* FROM workflows w WHERE ${b.join(" AND ")} ORDER BY w.updated_at DESC`,c);return Promise.all(d.map(async b=>{let c=i(b);return{...c,nodes:a.slim?await (0,f.fl)(c.id):await (0,f.UZ)(c.id)}}))}async function o(a){let b=await (0,f.Zy)("SELECT id FROM folders WHERE owner_id = $1 AND is_system = true AND name = 'My Workspace' LIMIT 1",[a]);return b?.id??null}async function p(a){let b=await (0,f.ro)(async b=>{let c=await (0,f.YW)(`INSERT INTO workflows (
9
9
  title, description, version, parent_workflow_id,
10
10
  evaluation_contract, owner_id, folder_id
11
11
  )
12
- VALUES ($1, $2, $3, $4, $5, $6, $7)`,[a.title,a.description,a.version,a.parentWorkflowId,a.evaluationContract,a.ownerId,a.folderId],b);return await b.query("UPDATE workflows SET family_root_id = $1 WHERE id = $1",[c]),Array.isArray(a.nodes)&&await j(b,c,a.nodes),c}),c=await r(b);if(!c)throw Error("Failed to load created workflow");return{...c,nodes:await (0,f.UZ)(b)}}async function o(a){let b=await (0,f.ro)(async b=>{if(Array.isArray(a.nodes)&&a.createNewVersion){let c=function(a){let b=a.trim();if(!b)return"1.0";let c=b.match(/^(\d+(?:\.\d+)*)(.*)$/);if(!c)return"1.0";let d=c[1],e=c[2],f=d.split("."),g=Number.parseInt(f[f.length-1]??"0",10);return Number.isNaN(g)?"1.0":(f[f.length-1]=String(g+1),f.join(".")+e)}(a.existing.version),d=void 0===a.evaluationContract?i(a.existing.evaluation_contract):i(a.evaluationContract);await b.query(`UPDATE workflows SET is_active = FALSE, updated_at = $2
12
+ VALUES ($1, $2, $3, $4, $5, $6, $7)`,[a.title,a.description,a.version,a.parentWorkflowId,a.evaluationContract,a.ownerId,a.folderId],b);return await b.query("UPDATE workflows SET family_root_id = $1 WHERE id = $1",[c]),Array.isArray(a.nodes)&&await k(b,c,a.nodes),c}),c=await t(b);if(!c)throw Error("Failed to load created workflow");return{...c,nodes:await (0,f.UZ)(b)}}async function q(a){let b=await (0,f.ro)(async b=>{if(Array.isArray(a.nodes)&&a.createNewVersion){let c=function(a){let b=a.trim();if(!b)return"1.0";let c=b.match(/^(\d+(?:\.\d+)*)(.*)$/);if(!c)return"1.0";let d=c[1],e=c[2],f=d.split("."),g=Number.parseInt(f[f.length-1]??"0",10);return Number.isNaN(g)?"1.0":(f[f.length-1]=String(g+1),f.join(".")+e)}(a.existing.version),d=void 0===a.evaluationContract?j(a.existing.evaluation_contract):j(a.evaluationContract);await b.query(`UPDATE workflows SET is_active = FALSE, updated_at = $2
13
13
  WHERE family_root_id = $1 AND is_active = TRUE`,[a.existing.family_root_id,new Date().toISOString()]);let e=await (0,f.YW)(`INSERT INTO workflows
14
14
  (title, description, version, parent_workflow_id, family_root_id,
15
15
  is_active, evaluation_contract, owner_id, folder_id)
16
- VALUES ($1, $2, $3, $4, $5, TRUE, $6, $7, $8)`,[(a.title??a.existing.title).trim(),(a.description??a.existing.description).trim(),c,a.workflowId,a.existing.family_root_id,d,a.existing.owner_id,a.existing.folder_id],b);return await j(b,e,a.nodes??[]),e}let c="string"==typeof a.version&&a.version.trim()?a.version.trim():a.existing.version,d=void 0===a.evaluationContract?i(a.existing.evaluation_contract):i(a.evaluationContract);return await b.query("UPDATE workflows SET title = $1, description = $2, version = $3, evaluation_contract = $4, updated_at = $5 WHERE id = $6",[(a.title??a.existing.title).trim(),(a.description??a.existing.description).trim(),c,d,new Date().toISOString(),a.workflowId]),Array.isArray(a.nodes)&&(await b.query("DELETE FROM workflow_nodes WHERE workflow_id = $1",[a.workflowId]),await j(b,a.workflowId,a.nodes)),a.workflowId}),c=await r(b);if(!c)throw Error("Failed to load updated workflow");return{...c,nodes:await (0,f.UZ)(b)}}async function p(a){await (0,f.g7)("UPDATE workflows SET folder_id = $1, updated_at = $2 WHERE id = $3",[a.folderId,new Date().toISOString(),a.workflowId])}async function q(a){await (0,f.g7)("DELETE FROM workflows WHERE id = $1",[a])}async function r(a){let b=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[a]);return b?h(b):null}async function s(a){return(0,f.ro)(async b=>{await b.query(`UPDATE workflows SET is_active = FALSE, updated_at = $2
17
- WHERE family_root_id = $1 AND is_active = TRUE`,[a.family_root_id,new Date().toISOString()]),await b.query("UPDATE workflows SET is_active = TRUE, updated_at = $2 WHERE id = $1",[a.id,new Date().toISOString()]);let c=await k(b,a.id);if(!c)throw Error("Failed to load activated workflow");return c})}async function t(a){await (0,f.g7)("UPDATE workflows SET owner_id = $1, updated_at = $2 WHERE id = $3",[a.newOwnerId,new Date().toISOString(),a.workflowId]);let b=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[a.workflowId]);return b?h(b):null}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{a.exports=import("pg")},75352:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(20506),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/workflows/[id]/transfer/route",pathname:"/api/workflows/[id]/transfer",filename:"route",bundlePath:"app/api/workflows/[id]/transfer/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/api/workflows/[id]/transfer/route.ts",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/workflows/[id]/transfer/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||z.isDev||y||(K=E,K="/index"===K?"/":K);let L=!0===z.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await z.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},93139:a=>{a.exports=import("bcryptjs")}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[3445,7111,1813,859,7945],()=>b(b.s=75352));module.exports=c})();
16
+ VALUES ($1, $2, $3, $4, $5, TRUE, $6, $7, $8)`,[(a.title??a.existing.title).trim(),(a.description??a.existing.description).trim(),c,a.workflowId,a.existing.family_root_id,d,a.existing.owner_id,a.existing.folder_id],b);return await k(b,e,a.nodes??[]),e}let c="string"==typeof a.version&&a.version.trim()?a.version.trim():a.existing.version,d=void 0===a.evaluationContract?j(a.existing.evaluation_contract):j(a.evaluationContract);return await b.query("UPDATE workflows SET title = $1, description = $2, version = $3, evaluation_contract = $4, updated_at = $5 WHERE id = $6",[(a.title??a.existing.title).trim(),(a.description??a.existing.description).trim(),c,d,new Date().toISOString(),a.workflowId]),Array.isArray(a.nodes)&&await l(b,a.workflowId,a.nodes),a.workflowId}),c=await t(b);if(!c)throw Error("Failed to load updated workflow");return{...c,nodes:await (0,f.UZ)(b)}}async function r(a){await (0,f.g7)("UPDATE workflows SET folder_id = $1, updated_at = $2 WHERE id = $3",[a.folderId,new Date().toISOString(),a.workflowId])}async function s(a){await (0,f.g7)("DELETE FROM workflows WHERE id = $1",[a])}async function t(a){let b=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[a]);return b?i(b):null}async function u(a){return(0,f.ro)(async b=>{await b.query(`UPDATE workflows SET is_active = FALSE, updated_at = $2
17
+ WHERE family_root_id = $1 AND is_active = TRUE`,[a.family_root_id,new Date().toISOString()]),await b.query("UPDATE workflows SET is_active = TRUE, updated_at = $2 WHERE id = $1",[a.id,new Date().toISOString()]);let c=await m(b,a.id);if(!c)throw Error("Failed to load activated workflow");return c})}async function v(a){await (0,f.g7)("UPDATE workflows SET owner_id = $1, updated_at = $2 WHERE id = $3",[a.newOwnerId,new Date().toISOString(),a.workflowId]);let b=await (0,f.Zy)("SELECT * FROM workflows WHERE id = $1",[a.workflowId]);return b?i(b):null}d()}catch(a){d(a)}})},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{a.exports=import("pg")},75352:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>y,patchFetch:()=>x,routeModule:()=>z,serverHooks:()=>C,workAsyncStorage:()=>A,workUnitAsyncStorage:()=>B});var e=c(19225),f=c(84006),g=c(8317),h=c(99373),i=c(34775),j=c(24235),k=c(261),l=c(54365),m=c(90771),n=c(73461),o=c(67798),p=c(92280),q=c(62018),r=c(45696),s=c(47929),t=c(86439),u=c(37527),v=c(20506),w=a([v]);v=(w.then?(await w)():w)[0];let z=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/workflows/[id]/transfer/route",pathname:"/api/workflows/[id]/transfer",filename:"route",bundlePath:"app/api/workflows/[id]/transfer/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/dante/workspace/dante-code/projects/bluekiwi/src/app/api/workflows/[id]/transfer/route.ts",nextConfigOutput:"standalone",userland:v,...{}}),{workAsyncStorage:A,workUnitAsyncStorage:B,serverHooks:C}=z;function x(){return(0,g.patchFetch)({workAsyncStorage:A,workUnitAsyncStorage:B})}async function y(a,b,c){c.requestMeta&&(0,h.setRequestMeta)(a,c.requestMeta),z.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/workflows/[id]/transfer/route";"/index"===d&&(d="/");let e=await z.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||z.isDev||y||(K=E,K="/index"===K?"/":K);let L=!0===z.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q=!!(null==B?void 0:B.isWrappedByNextServer),R=!!(0,h.getRequestMeta)(a,"minimalMode"),S=(0,h.getRequestMeta)(a,"incrementalCache")||await z.getIncrementalCache(a,w,A,R);null==S||S.resetRequestCache(),globalThis.__incrementalCache=S;let T={params:v,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:S,cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>z.onRequestError(a,b,d,e,B)},sharedContext:{buildId:g}},U=new l.NodeNextRequest(a),V=new l.NodeNextResponse(b),W=m.NextRequestAdapter.fromNodeNextRequest(U,(0,m.signalFromNodeResponse)(b));try{let e,g=async a=>z.handle(W,T).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let f=c.get("next.route");if(f){let b=`${N} ${f}`;a.setAttributes({"next.route":f,"http.route":f,"next.span_name":b}),a.updateName(b),e&&e!==a&&(e.setAttribute("http.route",f),e.updateName(b))}else a.updateName(`${N} ${d}`)}),h=async e=>{var h,i;let j=async({previousCacheEntry:f})=>{try{if(!R&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await g(e);a.fetchMetrics=T.renderOpts.fetchMetrics;let h=T.renderOpts.pendingWaitUntil;h&&c.waitUntil&&(c.waitUntil(h),h=void 0);let i=T.renderOpts.collectedTags;if(!I)return await (0,p.I)(U,V,d,T.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);i&&(b[s.NEXT_CACHE_TAGS_HEADER]=i),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==T.renderOpts.collectedRevalidate&&!(T.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&T.renderOpts.collectedRevalidate,e=void 0===T.renderOpts.collectedExpire||T.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:T.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await z.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},k=await z.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator:j,waitUntil:c.waitUntil,isMinimalMode:R});if(!I)return null;if((null==k||null==(h=k.value)?void 0:h.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==k||null==(i=k.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});R||b.setHeader("x-nextjs-cache",C?"REVALIDATED":k.isMiss?"MISS":k.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let l=(0,q.fromNodeOutgoingHttpHeaders)(k.value.headers);return R&&I||l.delete(s.NEXT_CACHE_TAGS_HEADER),!k.cacheControl||b.getHeader("Cache-Control")||l.get("Cache-Control")||l.set("Cache-Control",(0,r.getCacheControlHeader)(k.cacheControl)),await (0,p.I)(U,V,new Response(k.value.body,{headers:l,status:k.value.status||200})),null};Q&&P?await h(P):(e=O.getActiveScopeSpan(),await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},h),void 0,!Q))}catch(b){if(b instanceof t.NoFallbackError||await z.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(U,V,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},93139:a=>{a.exports=import("bcryptjs")}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[3445,7111,1813,859,7945],()=>b(b.s=75352));module.exports=c})();
@@ -7,7 +7,7 @@
7
7
  title, content, agent_type, tags, priority, owner_id, folder_id
8
8
  )
9
9
  VALUES ($1, $2, $3, $4, $5, $6, $7)
10
- `,[i.instruction_template.title,i.instruction_template.content,i.instruction_template.agent_type??"general",(i.instruction_template.tags??[]).join(","),i.instruction_template.priority??0,b.id,d],a));let k="number"==typeof j[String(h)]?Number(j[String(h)]):null;if(null!==k){let a=await (0,f.Zy)("SELECT id, owner_id, folder_id FROM credentials WHERE id = $1",[k]);if(!a||!await (0,g.Zk)(b,a))throw Error(`step ${i.step_order} credential binding is not accessible`)}await a.query(`INSERT INTO workflow_nodes (
10
+ `,[i.instruction_template.title,i.instruction_template.content,i.instruction_template.agent_type??"general",(i.instruction_template.tags??[]).join(","),i.instruction_template.priority??0,b.id,d],a));let k="number"==typeof j[String(h)]?Number(j[String(h)]):null;if(null!==k){let a=await (0,f.Zy)("SELECT id, owner_id FROM credentials WHERE id = $1",[k]);if(!a||!await (0,g.Zk)(b,a))throw Error(`step ${i.step_order} credential binding is not accessible`)}await a.query(`INSERT INTO workflow_nodes (
11
11
  workflow_id, step_order, node_type, title, instruction,
12
12
  instruction_id, loop_back_to, auto_advance, credential_id,
13
13
  hitl, visual_selection, credential_requirement