bluekiwi 1.2.4 β†’ 1.2.5

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 (83) hide show
  1. package/dist/assets/app-runtime/.next/BUILD_ID +1 -1
  2. package/dist/assets/app-runtime/.next/app-path-routes-manifest.json +10 -10
  3. package/dist/assets/app-runtime/.next/build-manifest.json +2 -2
  4. package/dist/assets/app-runtime/.next/server/app/(app)/credentials/page_client-reference-manifest.js +1 -1
  5. package/dist/assets/app-runtime/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  6. package/dist/assets/app-runtime/.next/server/app/(app)/instructions/page_client-reference-manifest.js +1 -1
  7. package/dist/assets/app-runtime/.next/server/app/(app)/page_client-reference-manifest.js +1 -1
  8. package/dist/assets/app-runtime/.next/server/app/(app)/settings/groups/page_client-reference-manifest.js +1 -1
  9. package/dist/assets/app-runtime/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  10. package/dist/assets/app-runtime/.next/server/app/(app)/tasks/[id]/page_client-reference-manifest.js +1 -1
  11. package/dist/assets/app-runtime/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -1
  12. package/dist/assets/app-runtime/.next/server/app/(app)/tutorial/page_client-reference-manifest.js +1 -1
  13. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/[id]/edit/page_client-reference-manifest.js +1 -1
  14. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/[id]/page_client-reference-manifest.js +1 -1
  15. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/new/page_client-reference-manifest.js +1 -1
  16. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/page.js +1 -1
  17. package/dist/assets/app-runtime/.next/server/app/(app)/workflows/page_client-reference-manifest.js +1 -1
  18. package/dist/assets/app-runtime/.next/server/app/(auth)/change-password/page_client-reference-manifest.js +1 -1
  19. package/dist/assets/app-runtime/.next/server/app/(auth)/invite/[token]/page_client-reference-manifest.js +1 -1
  20. package/dist/assets/app-runtime/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
  21. package/dist/assets/app-runtime/.next/server/app/(auth)/setup/page_client-reference-manifest.js +1 -1
  22. package/dist/assets/app-runtime/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  23. package/dist/assets/app-runtime/.next/server/app/_global-error.html +1 -1
  24. package/dist/assets/app-runtime/.next/server/app/_global-error.rsc +1 -1
  25. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  26. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  27. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  28. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  29. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  30. package/dist/assets/app-runtime/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  31. package/dist/assets/app-runtime/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  32. package/dist/assets/app-runtime/.next/server/app/_not-found.html +1 -1
  33. package/dist/assets/app-runtime/.next/server/app/_not-found.rsc +3 -3
  34. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  35. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  36. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  37. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  38. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  39. package/dist/assets/app-runtime/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  40. package/dist/assets/app-runtime/.next/server/app/api/version/route.js +1 -1
  41. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/activate/route.js +1 -1
  42. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/route.js +2 -2
  43. package/dist/assets/app-runtime/.next/server/app/api/workflows/[id]/transfer/route.js +1 -1
  44. package/dist/assets/app-runtime/.next/server/app/api/workflows/route.js +1 -1
  45. package/dist/assets/app-runtime/.next/server/app/change-password.html +1 -1
  46. package/dist/assets/app-runtime/.next/server/app/change-password.rsc +4 -4
  47. package/dist/assets/app-runtime/.next/server/app/change-password.segments/!KGF1dGgp/change-password/__PAGE__.segment.rsc +2 -2
  48. package/dist/assets/app-runtime/.next/server/app/change-password.segments/!KGF1dGgp/change-password.segment.rsc +1 -1
  49. package/dist/assets/app-runtime/.next/server/app/change-password.segments/!KGF1dGgp.segment.rsc +1 -1
  50. package/dist/assets/app-runtime/.next/server/app/change-password.segments/_full.segment.rsc +4 -4
  51. package/dist/assets/app-runtime/.next/server/app/change-password.segments/_head.segment.rsc +1 -1
  52. package/dist/assets/app-runtime/.next/server/app/change-password.segments/_index.segment.rsc +3 -3
  53. package/dist/assets/app-runtime/.next/server/app/change-password.segments/_tree.segment.rsc +1 -1
  54. package/dist/assets/app-runtime/.next/server/app/login.html +1 -1
  55. package/dist/assets/app-runtime/.next/server/app/login.rsc +4 -4
  56. package/dist/assets/app-runtime/.next/server/app/login.segments/!KGF1dGgp/login/__PAGE__.segment.rsc +2 -2
  57. package/dist/assets/app-runtime/.next/server/app/login.segments/!KGF1dGgp/login.segment.rsc +1 -1
  58. package/dist/assets/app-runtime/.next/server/app/login.segments/!KGF1dGgp.segment.rsc +1 -1
  59. package/dist/assets/app-runtime/.next/server/app/login.segments/_full.segment.rsc +4 -4
  60. package/dist/assets/app-runtime/.next/server/app/login.segments/_head.segment.rsc +1 -1
  61. package/dist/assets/app-runtime/.next/server/app/login.segments/_index.segment.rsc +3 -3
  62. package/dist/assets/app-runtime/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  63. package/dist/assets/app-runtime/.next/server/app/setup.html +1 -1
  64. package/dist/assets/app-runtime/.next/server/app/setup.rsc +4 -4
  65. package/dist/assets/app-runtime/.next/server/app/setup.segments/!KGF1dGgp/setup/__PAGE__.segment.rsc +2 -2
  66. package/dist/assets/app-runtime/.next/server/app/setup.segments/!KGF1dGgp/setup.segment.rsc +1 -1
  67. package/dist/assets/app-runtime/.next/server/app/setup.segments/!KGF1dGgp.segment.rsc +1 -1
  68. package/dist/assets/app-runtime/.next/server/app/setup.segments/_full.segment.rsc +4 -4
  69. package/dist/assets/app-runtime/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  70. package/dist/assets/app-runtime/.next/server/app/setup.segments/_index.segment.rsc +3 -3
  71. package/dist/assets/app-runtime/.next/server/app/setup.segments/_tree.segment.rsc +1 -1
  72. package/dist/assets/app-runtime/.next/server/app-paths-manifest.json +10 -10
  73. package/dist/assets/app-runtime/.next/server/chunks/5589.js +1 -1
  74. package/dist/assets/app-runtime/.next/server/middleware-build-manifest.js +1 -1
  75. package/dist/assets/app-runtime/.next/server/pages/404.html +1 -1
  76. package/dist/assets/app-runtime/.next/server/pages/500.html +1 -1
  77. package/dist/assets/app-runtime/.next/static/chunks/2360-2e6f6fe26549b313.js +1 -0
  78. package/dist/assets/app-runtime/.next/static/chunks/app/(app)/workflows/{page-a76941b77690f97c.js β†’ page-5e0523a4b132360a.js} +1 -1
  79. package/dist/assets/app-runtime/package.json +1 -1
  80. package/package.json +1 -1
  81. package/dist/assets/app-runtime/.next/static/chunks/2360-35e89e45b93e4b6e.js +0 -1
  82. /package/dist/assets/app-runtime/.next/static/{ymP-zxwYrYDNi2qYSDfJr β†’ 1tr4UL4nbWDTT2xlxpwJP}/_buildManifest.js +0 -0
  83. /package/dist/assets/app-runtime/.next/static/{ymP-zxwYrYDNi2qYSDfJr β†’ 1tr4UL4nbWDTT2xlxpwJP}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[238],{5121:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]])},5387:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("file-braces-corner",[["path",{d:"M14 22h4a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v6",key:"14cnrg"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M5 14a1 1 0 0 0-1 1v2a1 1 0 0 1-1 1 1 1 0 0 1 1 1v2a1 1 0 0 0 1 1",key:"sr0ebq"}],["path",{d:"M9 22a1 1 0 0 0 1-1v-2a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-2a1 1 0 0 0-1-1",key:"w793db"}]])},6015:(e,t,s)=>{Promise.resolve().then(s.bind(s,62929))},6296:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},6962:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]])},7019:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("layout-list",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}],["path",{d:"M14 4h7",key:"3xa0d5"}],["path",{d:"M14 9h7",key:"1icrd9"}],["path",{d:"M14 15h7",key:"1mj8o2"}],["path",{d:"M14 20h7",key:"11slyb"}]])},21362:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},21628:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]])},21975:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("upload",[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]])},25777:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]])},30971:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]])},37595:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("layout-grid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]])},38798:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]])},41585:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},41641:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]])},42129:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]])},49387:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]])},50568:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("folder-symlink",[["path",{d:"M2 9.35V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h7",key:"y8kt7d"}],["path",{d:"m8 16 3-3-3-3",key:"rlqrt1"}]])},51914:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},53961:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},60285:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]])},61878:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]])},62929:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>ee});var r=s(95155),a=s(12115),l=s(98500),i=s.n(l),n=s(73321),o=s(96035),d=s(5121),c=s(53961),u=s(21628),h=s(41641),m=s(21362),x=s(30971),p=s(94514),f=s(33210),b=s(7019),v=s(37595),w=s(51914),g=s(21975),y=s(42129),k=s(63393),j=s(61878),N=s(6296),A=s(60285),C=s(49387),S=s(67635),_=s(6962),M=s(68459),$=s(59943),z=s(45160),P=s(89239),E=s(81477),L=s(29991),I=s(37642),R=s(28367),T=s(25777),D=s(7810),q=s(92451),H=s(66609),F=s(42763),O=s(42360);let V=[{value:null,Icon:y.A,labelKey:"visibility.followFolder",descKey:"visibility.followFolderDesc"},{value:"personal",Icon:T.A,labelKey:"folders.visibilityPersonal",descKey:"folders.visibilityPersonalDesc"},{value:"group",Icon:D.A,labelKey:"folders.visibilityGroup",descKey:"folders.visibilityGroupDesc"},{value:"public",Icon:q.A,labelKey:"folders.visibilityPublic",descKey:"folders.visibilityPublicDesc"}];function K({workflowId:e,workflowTitle:t,currentOverride:s,open:l,onClose:i,onUpdate:n}){let{t:o}=(0,O.B)(),[d,c]=(0,a.useState)(null),[u,h]=(0,a.useState)([]),[m,x]=(0,a.useState)([]),[p,f]=(0,a.useState)(""),[b,v]=(0,a.useState)("reader"),[g,y]=(0,a.useState)(!1),k=(0,a.useCallback)(async()=>{if(!e)return;let t=await fetch(`/api/workflows/${e}/shares`);t.ok&&h((await t.json()).data??[])},[e]),j=(0,a.useCallback)(async()=>{let e=await fetch("/api/settings/groups");e.ok&&x((await e.json()).data??[])},[]);(0,a.useEffect)(()=>{l&&e&&(c(s),f(""),k(),j())},[l,e,s,k,j]);let N=async()=>{if(e&&!g){if(d!==s){y(!0);let t=await fetch(`/api/workflows/${e}/visibility`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({override:d})});if(y(!1),!t.ok){let e=await t.json().catch(()=>({}));H.oR.error(e?.error?.message??o("visibility.changeFailed"));return}}n(),i()}},A=async()=>{if(!e||!p)return;let t=await fetch(`/api/workflows/${e}/shares`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({group_id:p,access_level:b})});if(t.ok)f(""),await k();else{let e=await t.json().catch(()=>({}));H.oR.error(e?.error?.message??o("visibility.groupAddFailed"))}},C=async t=>{e&&((await fetch(`/api/workflows/${e}/shares/${t}`,{method:"DELETE"})).ok?await k():H.oR.error(o("visibility.groupRemoveFailed")))},S=m.filter(e=>!u.some(t=>t.group_id===e.id)),_=d!==s;return(0,r.jsx)(F.lG,{open:l,onOpenChange:e=>!e&&i(),children:(0,r.jsxs)(F.Cf,{className:"sm:max-w-[400px]",children:[(0,r.jsx)(F.c7,{children:(0,r.jsxs)(F.L3,{className:"flex items-center gap-2 text-base",children:[(0,r.jsx)("span",{className:"max-w-[200px] truncate",children:t}),(0,r.jsxs)("span",{className:"text-xs font-normal text-[var(--muted-foreground)]",children:["\xb7 ",o("visibility.settings")]})]})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-2 text-[11px] font-medium uppercase tracking-wide text-[var(--muted-foreground)]",children:o("visibility.scope")}),(0,r.jsx)("div",{className:"grid grid-cols-4 gap-2",children:V.map(({value:e,Icon:t,labelKey:s,descKey:a})=>{let l=d===e;return(0,r.jsxs)("button",{type:"button",disabled:g,onClick:()=>c(e),title:o(a),className:`flex flex-col items-center gap-1.5 rounded-[var(--radius-sm)] border px-2 py-2.5 text-xs transition-colors disabled:pointer-events-none disabled:opacity-50 ${l?"border-brand-blue-400 bg-brand-blue-50 text-brand-blue-700":"border-[var(--border)] text-[var(--muted-foreground)] hover:bg-surface-soft"}`,children:[(0,r.jsx)(t,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"font-medium",children:o(s)})]},String(e))})})]}),"group"===d&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-2 text-[11px] font-medium uppercase tracking-wide text-[var(--muted-foreground)]",children:o("visibility.groupSharing")}),0===u.length?(0,r.jsx)("p",{className:"px-1 text-xs text-[var(--muted-foreground)]",children:o("visibility.noSharedGroups")}):(0,r.jsx)("ul",{className:"mb-2 space-y-1",children:u.map(e=>(0,r.jsxs)("li",{className:"flex items-center gap-2 rounded-[var(--radius-sm)] bg-surface-soft px-2.5 py-1.5",children:[(0,r.jsx)(D.A,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,r.jsx)("span",{className:"flex-1 truncate text-sm",children:e.group_name}),(0,r.jsx)("span",{className:`shrink-0 rounded-full px-2 py-0.5 text-[10px] font-medium ${"contributor"===e.access_level?"bg-brand-blue-100 text-brand-blue-700":"bg-[var(--border)]/40 text-[var(--muted-foreground)]"}`,children:"contributor"===e.access_level?o("folders.accessLevelEditor"):o("folders.accessLevelViewer")}),(0,r.jsx)("button",{type:"button",onClick:()=>C(e.group_id),className:"flex h-5 w-5 shrink-0 items-center justify-center rounded text-[var(--muted-foreground)] hover:bg-destructive/10 hover:text-[var(--destructive)]",children:(0,r.jsx)(M.A,{className:"h-3 w-3"})})]},e.group_id))}),0===m.length?(0,r.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)]",children:o("visibility.noGroupsHint")}):0===S.length?(0,r.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)]",children:o("visibility.allGroupsShared")}):(0,r.jsxs)("div",{className:"flex gap-1.5",children:[(0,r.jsxs)("select",{value:p,onChange:e=>f(Number(e.target.value)||""),className:"h-7 min-w-0 flex-1 rounded-[var(--radius-sm)] border border-[var(--border)] bg-[var(--background)] px-2 text-xs outline-none focus:border-brand-blue-400",children:[(0,r.jsx)("option",{value:"",children:o("visibility.selectGroup")}),S.map(e=>(0,r.jsx)("option",{value:e.id,children:e.name},e.id))]}),(0,r.jsxs)("select",{value:b,onChange:e=>v(e.target.value),className:"h-7 w-20 rounded-[var(--radius-sm)] border border-[var(--border)] bg-[var(--background)] px-2 text-xs outline-none focus:border-brand-blue-400",children:[(0,r.jsx)("option",{value:"reader",children:o("folders.accessLevelViewer")}),(0,r.jsx)("option",{value:"contributor",children:o("folders.accessLevelEditor")})]}),(0,r.jsx)("button",{type:"button",disabled:!p,onClick:A,className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-[var(--radius-sm)] bg-brand-blue-600 text-white hover:bg-brand-blue-700 disabled:opacity-40",children:(0,r.jsx)(w.A,{className:"h-3.5 w-3.5"})})]})]}),(0,r.jsxs)("div",{className:"flex justify-end gap-2 pt-1",children:[(0,r.jsx)(P.$,{variant:"outline",size:"sm",onClick:i,children:o("common.cancel")}),(0,r.jsx)(P.$,{size:"sm",disabled:g,onClick:N,className:_?"":"opacity-60",children:g?o("visibility.applying"):o("visibility.apply")})]})]})})}var W=s(52997),G=s(80167),Z=s(72264),B=s(21988),J=s(78619);let U="bluekiwi:workflows:folder-pane-width",X=[5,10,20,50];function Q({node:e}){let t=e.node_type,s="gate"===t?{Icon:o.A,className:"border-kiwi-600/30 bg-kiwi-100 text-kiwi-700"}:"loop"===t?{Icon:d.A,className:"border-[var(--border)] bg-transparent text-[var(--muted-foreground)]"}:{Icon:c.A,className:"border-brand-blue-600/20 bg-brand-blue-100 text-brand-blue-700"};return(0,r.jsxs)(z.E,{className:s.className,children:[(0,r.jsx)(s.Icon,{className:"h-3 w-3"}),(0,r.jsx)("span",{className:"truncate text-[11px]",children:e.title})]})}function Y({nodes:e}){let t=e.slice(0,5),s=e.length-5;return(0,r.jsxs)("div",{className:"flex items-center gap-1.5 overflow-hidden",children:[t.map((e,s)=>(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(Q,{node:e}),s<t.length-1&&(0,r.jsx)(u.A,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"})]},e.id)),s>0&&(0,r.jsxs)("span",{className:"shrink-0 text-[11px] text-[var(--muted-foreground)]",children:["+",s]})]})}function ee(){let e=(0,n.usePathname)(),t=(0,n.useRouter)(),s=(0,n.useSearchParams)(),{t:l}=(0,O.B)(),[o,d]=(0,a.useState)(()=>{let e=Number(s.get("page"));return Number.isFinite(e)&&e>0?e:1}),[c,u]=(0,a.useState)(()=>{let e=Number(s.get("page_size"));return X.includes(e)?e:10}),[z,T]=(0,a.useState)(()=>"grid"===s.get("view")?"grid":"list"),[D,q]=(0,a.useState)(()=>{let e=s.get("folder_id");return e?Number(e):null}),[F,V]=(0,a.useState)([]),[Q,ee]=(0,a.useState)(0),[et,es]=(0,a.useState)(!1),[er,ea]=(0,a.useState)(""),el=(0,a.useRef)(null),ei=(0,a.useRef)(null),en=(0,a.useRef)(null),eo=(0,a.useRef)(null),[ed,ec]=(0,a.useState)(!1),[eu,eh]=(0,a.useState)(!1),[em,ex]=(0,a.useState)(()=>{let e=window.localStorage.getItem(U),t=e?Number(e):NaN;return Number.isFinite(t)?Math.min(520,Math.max(240,t)):320}),[ep,ef]=(0,a.useState)(null);(0,a.useEffect)(()=>{let e=window.matchMedia("(min-width: 1024px)"),t=()=>ec(e.matches);return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,a.useEffect)(()=>{window.localStorage.setItem(U,String(em))},[em]),(0,a.useEffect)(()=>{if(!ep)return;let e=()=>ef(null);return document.addEventListener("click",e),document.addEventListener("contextmenu",e),()=>{document.removeEventListener("click",e),document.removeEventListener("contextmenu",e)}},[ep]);let[eb,ev]=(0,a.useState)(()=>s.get("q")??""),[ew,eg]=(0,a.useState)(()=>s.get("q")??""),[ey,ek]=(0,a.useState)(null),[ej,eN]=(0,a.useState)(!1),[eA,eC]=(0,a.useState)(null),{data:eS,loading:e_,refetch:eM}=(0,B.U)(()=>{let e=new URLSearchParams;return null!==D&&e.set("folder_id",String(D)),ew&&e.set("q",ew),`/api/workflows?${e}`},[D,ew]),{deleteTarget:e$,setDeleteTarget:ez,handleDelete:eP}=(0,J.b)({endpoint:e=>`/api/workflows/${e.id}`,onSuccess:async()=>{H.oR.success(l("workflows.deleted")),await eM()},fallbackMessage:l("common.deleteFailed")}),eE=Math.max(1,Math.ceil(eS.length/c)),eL=Math.min(o,eE),eI=eS.slice((eL-1)*c,eL*c);(0,a.useEffect)(()=>{let e=window.setTimeout(()=>{eg(eb.trim())},250);return()=>window.clearTimeout(e)},[eb]),(0,a.useEffect)(()=>{eo.current?.scrollTo({top:0,behavior:"smooth"})},[D,ew,c,z]),(0,a.useEffect)(()=>{let r=new URLSearchParams;null!==D&&r.set("folder_id",String(D)),eb.trim()&&r.set("q",eb.trim()),eL>1&&r.set("page",String(eL)),10!==c&&r.set("page_size",String(c)),"list"!==z&&r.set("view",z);let a=r.toString();a!==s.toString()&&t.replace(a?`${e}?${a}`:e,{scroll:!1})},[e,t,s,D,eb,eL,c,z]);let eR=(0,a.useCallback)(()=>{ev(""),d(1)},[]),eT=(0,a.useCallback)(e=>{q(t=>t===e?null:e),d(1)},[]),eD=null!==D?F.find(e=>e.id===D)??null:null,eq=(0,a.useMemo)(()=>{if(!eD)return[];let e=[],t=eD,s=new Set;for(;t&&!s.has(t.id)&&(s.add(t.id),e.unshift(t),null!==t.parent_id);){;t=F.find(e=>e.id===t.parent_id)}return e},[eD,F]),eH=(0,a.useCallback)(e=>{if(!e||!D||e===D)return[];let t=[],s=F.find(t=>t.id===e),r=new Set;for(;s&&s.id!==D&&!r.has(s.id)&&(r.add(s.id),t.unshift(s.is_system?l("folders.myWorkspace"):s.name),null!==s.parent_id);){;s=F.find(e=>e.id===s.parent_id)}return t},[D,F,l]),eF=(0,a.useCallback)(()=>{eD&&!eD.is_system&&(ea(eD.name),es(!0),setTimeout(()=>{el.current?.focus(),el.current?.select()},0))},[eD]),eO=(0,a.useCallback)(async()=>{if(!D||!er.trim())return void es(!1);es(!1);let e=await fetch(`/api/folders/${D}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:er.trim()})});if(e.ok)ee(e=>e+1);else{let t=await e.json().catch(()=>({}));H.oR.error(t?.error?.message??l("folders.renameFailed"))}},[D,er,l]),eV=(0,a.useCallback)(async(e,t)=>{(await fetch(`/api/workflows/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({folder_id:t})})).ok&&(H.oR.success(l("workflows.movedToFolder")),eM())},[eM,l]),eK=async e=>{(await fetch("/api/workflows",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:`${e.title} (${l("workflows.copy")})`,description:e.description,nodes:e.nodes.map(e=>({title:e.title,node_type:e.node_type,instruction_id:e.instruction_id,instruction:e.resolved_instruction}))})})).ok&&(H.oR.success(l("workflows.duplicated")),eM())},eW=(0,a.useCallback)(e=>{if(!ed||!en.current)return;e.preventDefault();let t=e.pointerId,s=e.currentTarget;eh(!0),s.setPointerCapture(t);let r=e=>{let t=en.current?.getBoundingClientRect();t&&ex(Math.min(520,Math.max(240,Math.round(e-t.left))))};r(e.clientX);let a=e=>{r(e.clientX)},l=()=>{eh(!1),document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",l)};document.body.style.cursor="col-resize",document.body.style.userSelect="none",window.addEventListener("pointermove",a),window.addEventListener("pointerup",l),window.addEventListener("pointercancel",l)},[ed]),eG=(0,a.useMemo)(()=>{if(ed)return{gridTemplateColumns:`${em}px 8px minmax(0,1fr)`}},[em,ed]),eZ=(0,a.useCallback)(e=>(0,r.jsxs)("div",{className:`flex items-center justify-end gap-2 ${"top"===e?"mb-4":"mt-6"}`,children:[(0,r.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:[l("workflows.results"),":"]}),(0,r.jsxs)(L.l6,{value:String(c),onValueChange:e=>{u(Number(e)),d(1)},children:[(0,r.jsx)(L.bq,{size:"sm",className:"w-20 bg-background",children:(0,r.jsx)(L.yv,{})}),(0,r.jsx)(L.gC,{align:"end",children:X.map(e=>(0,r.jsx)(L.eb,{value:String(e),children:e},e))})]}),(0,r.jsx)(P.$,{variant:"outline",size:"icon",className:"h-8 w-8",disabled:eL<=1,onClick:()=>d(e=>Math.max(1,e-1)),children:(0,r.jsx)(h.A,{className:"h-4 w-4"})}),(0,r.jsxs)("span",{className:"min-w-16 text-right text-xs text-[var(--muted-foreground)]",children:[eL," / ",eE]}),(0,r.jsx)(P.$,{variant:"outline",size:"icon",className:"h-8 w-8",disabled:eL>=eE,onClick:()=>d(e=>Math.min(eE,e+1)),children:(0,r.jsx)(m.A,{className:"h-4 w-4"})})]}),[eL,c,l,eE]);return(0,r.jsxs)("div",{className:"flex h-full min-h-0 flex-col",children:[(0,r.jsx)("div",{className:"sticky top-0 z-20 border-b border-[var(--border)] bg-[var(--background)]/95 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"flex h-14 items-center justify-between gap-4 px-5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(x.A,{className:"h-5 w-5 text-[var(--muted-foreground)]"}),(0,r.jsx)("h1",{className:`text-2xl font-bold tracking-tight ${null!==D?"cursor-pointer hover:text-brand-blue-600 transition-colors":""}`,onClick:()=>{null!==D&&(q(null),es(!1),d(1))},children:l("workflows.title")}),eq.map((e,t)=>{let s=t===eq.length-1,a=e.is_system?l("folders.myWorkspace"):e.name;return(0,r.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(m.A,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]/50"}),s&&et?(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[(0,r.jsx)("input",{ref:el,value:er,onChange:e=>ea(e.target.value),onKeyDown:e=>{"Enter"===e.key&&eO(),"Escape"===e.key&&es(!1)},className:"h-8 rounded-[var(--radius-sm)] border border-brand-blue-400 bg-transparent px-2 text-lg font-bold outline-none ring-1 ring-brand-blue-400/30"}),(0,r.jsx)("button",{type:"button",onClick:()=>void eO(),className:"flex h-7 w-7 items-center justify-center rounded text-kiwi-600 hover:bg-kiwi-100",children:(0,r.jsx)(p.A,{className:"h-4 w-4"})}),(0,r.jsx)("button",{type:"button",onClick:()=>es(!1),className:"flex h-7 w-7 items-center justify-center rounded text-[var(--muted-foreground)] hover:bg-surface-soft",children:(0,r.jsx)(f.A,{className:"h-4 w-4"})})]}):(0,r.jsx)("span",{className:`text-2xl font-bold tracking-tight select-none ${!s?"cursor-pointer text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors":e.is_system?"cursor-default":"cursor-text"}`,title:s&&!e.is_system?l("folders.doubleClickToRename"):void 0,onClick:s?void 0:()=>{q(e.id),es(!1),d(1)},onDoubleClick:s&&!e.is_system?eF:void 0,children:a})]},e.id)})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("div",{className:"flex rounded-[var(--radius)] border border-[var(--border)] p-0.5",children:[(0,r.jsx)(P.$,{variant:"ghost",size:"icon",className:`h-7 w-7 ${"list"===z?"bg-[var(--card)] shadow-sm":""}`,onClick:()=>T("list"),title:l("common.listView"),children:(0,r.jsx)(b.A,{className:"h-3.5 w-3.5"})}),(0,r.jsx)(P.$,{variant:"ghost",size:"icon",className:`h-7 w-7 ${"grid"===z?"bg-[var(--card)] shadow-sm":""}`,onClick:()=>T("grid"),title:l("common.gridView"),children:(0,r.jsx)(v.A,{className:"h-3.5 w-3.5"})})]}),(0,r.jsx)(P.$,{asChild:!0,size:"sm",children:(0,r.jsxs)(i(),{href:D?`/workflows/new?folder_id=${D}`:"/workflows/new",children:[(0,r.jsx)(w.A,{className:"h-4 w-4"}),l("workflows.newWorkflow")]})}),(0,r.jsxs)(P.$,{size:"sm",variant:"outline",onClick:()=>eN(!0),children:[(0,r.jsx)(g.A,{className:"h-4 w-4"}),l("workflows.import")]})]})]})}),(0,r.jsxs)("div",{ref:en,className:`grid min-h-0 flex-1 grid-cols-1 lg:grid-cols-[320px_8px_minmax(0,1fr)] ${eu?"cursor-col-resize":""}`,style:eG,children:[(0,r.jsxs)("aside",{className:"flex min-h-0 flex-col border-b border-[var(--border)] bg-surface-soft/60 lg:border-r lg:border-b-0",children:[(0,r.jsxs)("div",{className:"shrink-0 border-b border-[var(--border)] px-4 py-4",children:[(0,r.jsx)("p",{className:"text-sm font-semibold",children:l("folders.title")}),(0,r.jsx)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:eD?eD.is_system?l("folders.myWorkspace"):eD.name:l("workflows.allWorkflows")})]}),(0,r.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto px-3 py-3",children:[(0,r.jsxs)("button",{onClick:()=>eT(null),onContextMenu:e=>{e.preventDefault(),ef({x:e.clientX,y:e.clientY})},className:`mb-1 flex w-full items-center gap-2 rounded-[var(--radius-sm)] px-2 py-1.5 text-sm transition-colors ${null===D?"bg-brand-blue-100 font-medium text-brand-blue-700":"text-[var(--muted-foreground)] hover:bg-surface-soft hover:text-[var(--foreground)]"}`,children:[(0,r.jsx)(y.A,{className:"h-3.5 w-3.5 shrink-0"}),l("workflows.allWorkflows")]}),(0,r.jsx)(G.z,{selectedId:D,onSelect:eT,onFoldersChange:V,onWorkflowDrop:eV,refreshKey:Q,onCreateRootRef:e=>{ei.current=e}}),ep&&(0,r.jsx)("div",{className:"fixed z-50 min-w-[140px] overflow-hidden rounded-[var(--radius-sm)] border border-[var(--border)] bg-[var(--card)] py-1 shadow-[var(--shadow-card)]",style:{top:ep.y,left:ep.x},onClick:()=>ef(null),children:(0,r.jsxs)("button",{className:"flex w-full items-center gap-2 px-3 py-1.5 text-sm hover:bg-surface-soft",onClick:()=>{ei.current?.(),ef(null)},children:[(0,r.jsx)(k.A,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),l("folders.new")]})})]})]}),(0,r.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":l("folders.title"),onPointerDown:eW,className:"hidden lg:flex items-stretch justify-center bg-transparent",children:(0,r.jsx)("div",{className:"group flex w-2 cursor-col-resize items-center justify-center",children:(0,r.jsx)("div",{className:"h-full w-px bg-[var(--border)] transition-colors group-hover:bg-brand-blue-400 group-active:bg-brand-blue-500"})})}),(0,r.jsx)("section",{ref:eo,className:"min-h-0 overflow-y-auto",children:(0,r.jsxs)("div",{className:"px-5 py-5",children:[(0,r.jsx)("div",{className:"sticky top-0 z-10 -mx-5 mb-4 border-b border-[var(--border)] bg-[var(--background)]/95 px-5 py-3 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",children:[(0,r.jsxs)("div",{className:"relative w-full max-w-md",children:[(0,r.jsx)(j.A,{className:"pointer-events-none absolute top-1/2 left-2.5 h-3.5 w-3.5 -translate-y-1/2 text-[var(--muted-foreground)]"}),(0,r.jsx)("input",{type:"text",value:eb,onChange:e=>{ev(e.target.value),d(1)},placeholder:l("common.search"),className:"h-9 w-full rounded-[var(--radius-sm)] border border-[var(--border)] bg-transparent pl-8 pr-7 text-sm outline-none placeholder:text-[var(--muted-foreground)] focus:border-brand-blue-400 focus:ring-1 focus:ring-brand-blue-400/30"}),eb!==ew?(0,r.jsx)("span",{className:"pointer-events-none absolute top-1/2 right-2 -translate-y-1/2 text-[var(--muted-foreground)]",children:(0,r.jsx)(N.A,{className:"h-3.5 w-3.5 animate-spin"})}):eb&&(0,r.jsx)("button",{type:"button",onClick:eR,className:"absolute top-1/2 right-2 -translate-y-1/2 text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,r.jsx)(f.A,{className:"h-3.5 w-3.5"})})]}),(0,r.jsx)("div",{className:"shrink-0",children:eZ("top")})]})}),(eb||null!==D)&&(0,r.jsxs)("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[eb&&(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-brand-blue-300/50 bg-brand-blue-50 px-2.5 py-0.5 text-xs text-brand-blue-700",children:[(0,r.jsx)(j.A,{className:"h-3 w-3"}),eb,(0,r.jsx)("button",{onClick:eR,className:"ml-0.5 opacity-60 hover:opacity-100",children:(0,r.jsx)(f.A,{className:"h-3 w-3"})})]}),(0,r.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:[eS.length,l("workflows.results")]})]}),e_?(0,r.jsx)(E.Zp,{children:(0,r.jsx)(E.Wu,{className:"py-10 text-center text-sm text-[var(--muted-foreground)]",children:l("common.loading")})}):0===eS.length?(0,r.jsx)($.p,{icon:x.A,title:l("workflows.empty"),description:l("workflows.emptyDesc"),actionLabel:l("workflows.newWorkflow"),actionHref:D?`/workflows/new?folder_id=${D}`:"/workflows/new"}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"grid"===z?"grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-3":"flex flex-col gap-2",children:eI.map(e=>{let s,a;return"list"===z?(0,r.jsx)(E.Zp,{className:"cursor-pointer gap-0 py-0 transition-shadow hover:shadow-soft",draggable:!0,onDragStart:t=>t.dataTransfer.setData("workflowId",String(e.id)),onClick:()=>t.push(`/workflows/${e.id}`),children:(0,r.jsxs)(E.Wu,{className:"px-4 py-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("div",{className:"min-w-0 flex-1",children:(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("p",{className:"truncate text-sm font-semibold",children:0===(s=eH(e.folder_id)).length?e.title:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("span",{className:"text-xs font-normal text-[var(--muted-foreground)]/60",children:[s.join(" > ")," > "]}),e.title]})}),(0,r.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),ek({id:e.id,title:e.title,override:e.visibility_override??null})},className:"rounded opacity-60 hover:opacity-100",title:l("visibility.settings"),children:(0,r.jsx)(I.w,{visibility:e.visibility_override??"inherit",iconOnly:!0})})]})}),(0,r.jsx)("p",{className:"shrink-0 text-[11px] text-[var(--muted-foreground)]",children:new Date(e.created_at).toLocaleDateString("ko-KR")}),(0,r.jsxs)(Z.rI,{children:[(0,r.jsx)(Z.ty,{asChild:!0,children:(0,r.jsx)(P.$,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:e=>e.stopPropagation(),children:(0,r.jsx)(A.A,{className:"h-4 w-4"})})}),(0,r.jsxs)(Z.SQ,{align:"end",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)(Z._2,{onClick:()=>t.push(`/workflows/${e.id}/edit`),children:[(0,r.jsx)(C.A,{className:"mr-2 h-3.5 w-3.5"}),l("common.edit")]}),(0,r.jsxs)(Z._2,{onClick:()=>eK(e),children:[(0,r.jsx)(S.A,{className:"mr-2 h-3.5 w-3.5"}),l("common.duplicate")]}),(0,r.jsxs)(Z._2,{onClick:()=>eC({id:e.id,title:e.title,folderId:e.folder_id??null}),children:[(0,r.jsx)(_.A,{className:"mr-2 h-3.5 w-3.5"}),l("workflows.export")]}),(0,r.jsx)(Z.mB,{}),(0,r.jsxs)(Z._2,{className:"text-[var(--destructive)]",onClick:()=>ez(e),children:[(0,r.jsx)(M.A,{className:"mr-2 h-3.5 w-3.5"}),l("common.delete")]})]})]})]}),(0,r.jsx)("div",{className:"mt-2 overflow-hidden",children:(0,r.jsx)(Y,{nodes:e.nodes})})]})},e.id):(0,r.jsx)(E.Zp,{className:"cursor-pointer gap-0 py-0 transition-shadow hover:shadow-soft",draggable:!0,onDragStart:t=>t.dataTransfer.setData("workflowId",String(e.id)),onClick:()=>t.push(`/workflows/${e.id}`),children:(0,r.jsxs)(E.Wu,{className:"flex h-full flex-col justify-between p-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("p",{className:"truncate text-sm font-semibold",children:0===(a=eH(e.folder_id)).length?e.title:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("span",{className:"text-xs font-normal text-[var(--muted-foreground)]/60",children:[a.join(" > ")," > "]}),e.title]})}),(0,r.jsx)("p",{className:"mt-0.5 line-clamp-1 text-xs text-[var(--muted-foreground)]",children:e.description||"\xa0"}),(0,r.jsx)("div",{className:"mt-1.5",children:(0,r.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),ek({id:e.id,title:e.title,override:e.visibility_override??null})},className:"rounded opacity-60 hover:opacity-100",title:l("visibility.settings"),children:(0,r.jsx)(I.w,{visibility:e.visibility_override??"inherit",iconOnly:!0})})})]}),(0,r.jsxs)(Z.rI,{children:[(0,r.jsx)(Z.ty,{asChild:!0,children:(0,r.jsx)(P.$,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:e=>e.stopPropagation(),children:(0,r.jsx)(A.A,{className:"h-4 w-4"})})}),(0,r.jsxs)(Z.SQ,{align:"end",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)(Z._2,{onClick:()=>t.push(`/workflows/${e.id}/edit`),children:[(0,r.jsx)(C.A,{className:"mr-2 h-3.5 w-3.5"}),l("common.edit")]}),(0,r.jsxs)(Z._2,{onClick:()=>eK(e),children:[(0,r.jsx)(S.A,{className:"mr-2 h-3.5 w-3.5"}),l("common.duplicate")]}),(0,r.jsxs)(Z._2,{onClick:()=>eC({id:e.id,title:e.title,folderId:e.folder_id??null}),children:[(0,r.jsx)(_.A,{className:"mr-2 h-3.5 w-3.5"}),l("workflows.export")]}),(0,r.jsx)(Z.mB,{}),(0,r.jsxs)(Z._2,{className:"text-[var(--destructive)]",onClick:()=>ez(e),children:[(0,r.jsx)(M.A,{className:"mr-2 h-3.5 w-3.5"}),l("common.delete")]})]})]})]}),(0,r.jsx)("div",{className:"mt-3",children:(0,r.jsx)(Y,{nodes:e.nodes})})]}),(0,r.jsxs)("p",{className:"mt-3 text-[11px] text-[var(--muted-foreground)]",children:[e.nodes.length,l("workflows.nodes")," \xb7"," ",new Date(e.created_at).toLocaleDateString("ko-KR")]})]})},e.id)})}),eZ("bottom")]})]})})]}),(0,r.jsx)(R.o,{target:e$,title:l("workflows.deleteConfirm"),description:`"${e$?.title??""}"${l("workflows.deleteDesc")}`,onCancel:()=>ez(null),onConfirm:eP}),(0,r.jsx)(K,{workflowId:ey?.id??null,workflowTitle:ey?.title??"",currentOverride:ey?.override??null,open:null!==ey,onClose:()=>ek(null),onUpdate:eM}),(0,r.jsx)(W.Z,{open:ej,onClose:()=>eN(!1),mode:"import",folderId:D,onImported:e=>t.push(`/workflows/${e}`)}),eA&&(0,r.jsx)(W.Z,{open:null!==eA,onClose:()=>eC(null),mode:"export",workflowId:eA.id,workflowTitle:eA.title,folderId:eA.folderId})]})}},63393:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("folder-plus",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]])},67635:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},73321:(e,t,s)=>{"use strict";var r=s(74645);s.o(r,"useParams")&&s.d(t,{useParams:function(){return r.useParams}}),s.o(r,"usePathname")&&s.d(t,{usePathname:function(){return r.usePathname}}),s.o(r,"useRouter")&&s.d(t,{useRouter:function(){return r.useRouter}}),s.o(r,"useSearchParams")&&s.d(t,{useSearchParams:function(){return r.useSearchParams}})},96035:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]])},97233:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("link-2",[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]])}},e=>{e.O(0,[8409,7262,6095,8500,7659,7050,7533,6073,2360,2997,4663,8441,3794,7358],()=>e(e.s=6015)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[238],{5121:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]])},5387:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("file-braces-corner",[["path",{d:"M14 22h4a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v6",key:"14cnrg"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M5 14a1 1 0 0 0-1 1v2a1 1 0 0 1-1 1 1 1 0 0 1 1 1v2a1 1 0 0 0 1 1",key:"sr0ebq"}],["path",{d:"M9 22a1 1 0 0 0 1-1v-2a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-2a1 1 0 0 0-1-1",key:"w793db"}]])},6015:(e,t,s)=>{Promise.resolve().then(s.bind(s,62929))},6296:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},6962:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]])},7019:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("layout-list",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}],["path",{d:"M14 4h7",key:"3xa0d5"}],["path",{d:"M14 9h7",key:"1icrd9"}],["path",{d:"M14 15h7",key:"1mj8o2"}],["path",{d:"M14 20h7",key:"11slyb"}]])},21362:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},21628:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]])},21975:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("upload",[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]])},25777:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]])},30971:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]])},37595:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("layout-grid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]])},38798:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]])},41585:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},41641:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]])},42129:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]])},49387:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]])},50568:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("folder-symlink",[["path",{d:"M2 9.35V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h7",key:"y8kt7d"}],["path",{d:"m8 16 3-3-3-3",key:"rlqrt1"}]])},51914:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},53961:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},60285:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]])},61878:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]])},62929:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>ee});var r=s(95155),a=s(12115),l=s(98500),i=s.n(l),n=s(73321),o=s(96035),d=s(5121),c=s(53961),u=s(21628),h=s(41641),m=s(21362),x=s(30971),p=s(94514),f=s(33210),b=s(7019),v=s(37595),w=s(51914),g=s(21975),y=s(42129),k=s(63393),j=s(61878),N=s(6296),A=s(60285),C=s(49387),S=s(67635),_=s(6962),M=s(68459),$=s(59943),z=s(45160),P=s(89239),E=s(81477),L=s(29991),I=s(37642),R=s(28367),T=s(25777),D=s(7810),q=s(92451),H=s(66609),F=s(42763),O=s(42360);let V=[{value:null,Icon:y.A,labelKey:"visibility.followFolder",descKey:"visibility.followFolderDesc"},{value:"personal",Icon:T.A,labelKey:"folders.visibilityPersonal",descKey:"folders.visibilityPersonalDesc"},{value:"group",Icon:D.A,labelKey:"folders.visibilityGroup",descKey:"folders.visibilityGroupDesc"},{value:"public",Icon:q.A,labelKey:"folders.visibilityPublic",descKey:"folders.visibilityPublicDesc"}];function K({workflowId:e,workflowTitle:t,currentOverride:s,open:l,onClose:i,onUpdate:n}){let{t:o}=(0,O.B)(),[d,c]=(0,a.useState)(null),[u,h]=(0,a.useState)([]),[m,x]=(0,a.useState)([]),[p,f]=(0,a.useState)(""),[b,v]=(0,a.useState)("reader"),[g,y]=(0,a.useState)(!1),k=(0,a.useCallback)(async()=>{if(!e)return;let t=await fetch(`/api/workflows/${e}/shares`);t.ok&&h((await t.json()).data??[])},[e]),j=(0,a.useCallback)(async()=>{let e=await fetch("/api/settings/groups");e.ok&&x((await e.json()).data??[])},[]);(0,a.useEffect)(()=>{l&&e&&(c(s),f(""),k(),j())},[l,e,s,k,j]);let N=async()=>{if(e&&!g){if(d!==s){y(!0);let t=await fetch(`/api/workflows/${e}/visibility`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({override:d})});if(y(!1),!t.ok){let e=await t.json().catch(()=>({}));H.oR.error(e?.error?.message??o("visibility.changeFailed"));return}}n(),i()}},A=async()=>{if(!e||!p)return;let t=await fetch(`/api/workflows/${e}/shares`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({group_id:p,access_level:b})});if(t.ok)f(""),await k();else{let e=await t.json().catch(()=>({}));H.oR.error(e?.error?.message??o("visibility.groupAddFailed"))}},C=async t=>{e&&((await fetch(`/api/workflows/${e}/shares/${t}`,{method:"DELETE"})).ok?await k():H.oR.error(o("visibility.groupRemoveFailed")))},S=m.filter(e=>!u.some(t=>t.group_id===e.id)),_=d!==s;return(0,r.jsx)(F.lG,{open:l,onOpenChange:e=>!e&&i(),children:(0,r.jsxs)(F.Cf,{className:"sm:max-w-[400px]",children:[(0,r.jsx)(F.c7,{children:(0,r.jsxs)(F.L3,{className:"flex items-center gap-2 text-base",children:[(0,r.jsx)("span",{className:"max-w-[200px] truncate",children:t}),(0,r.jsxs)("span",{className:"text-xs font-normal text-[var(--muted-foreground)]",children:["\xb7 ",o("visibility.settings")]})]})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-2 text-[11px] font-medium uppercase tracking-wide text-[var(--muted-foreground)]",children:o("visibility.scope")}),(0,r.jsx)("div",{className:"grid grid-cols-4 gap-2",children:V.map(({value:e,Icon:t,labelKey:s,descKey:a})=>{let l=d===e;return(0,r.jsxs)("button",{type:"button",disabled:g,onClick:()=>c(e),title:o(a),className:`flex flex-col items-center gap-1.5 rounded-[var(--radius-sm)] border px-2 py-2.5 text-xs transition-colors disabled:pointer-events-none disabled:opacity-50 ${l?"border-brand-blue-400 bg-brand-blue-50 text-brand-blue-700":"border-[var(--border)] text-[var(--muted-foreground)] hover:bg-surface-soft"}`,children:[(0,r.jsx)(t,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"font-medium",children:o(s)})]},String(e))})})]}),"group"===d&&(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"mb-2 text-[11px] font-medium uppercase tracking-wide text-[var(--muted-foreground)]",children:o("visibility.groupSharing")}),0===u.length?(0,r.jsx)("p",{className:"px-1 text-xs text-[var(--muted-foreground)]",children:o("visibility.noSharedGroups")}):(0,r.jsx)("ul",{className:"mb-2 space-y-1",children:u.map(e=>(0,r.jsxs)("li",{className:"flex items-center gap-2 rounded-[var(--radius-sm)] bg-surface-soft px-2.5 py-1.5",children:[(0,r.jsx)(D.A,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,r.jsx)("span",{className:"flex-1 truncate text-sm",children:e.group_name}),(0,r.jsx)("span",{className:`shrink-0 rounded-full px-2 py-0.5 text-[10px] font-medium ${"contributor"===e.access_level?"bg-brand-blue-100 text-brand-blue-700":"bg-[var(--border)]/40 text-[var(--muted-foreground)]"}`,children:"contributor"===e.access_level?o("folders.accessLevelEditor"):o("folders.accessLevelViewer")}),(0,r.jsx)("button",{type:"button",onClick:()=>C(e.group_id),className:"flex h-5 w-5 shrink-0 items-center justify-center rounded text-[var(--muted-foreground)] hover:bg-destructive/10 hover:text-[var(--destructive)]",children:(0,r.jsx)(M.A,{className:"h-3 w-3"})})]},e.group_id))}),0===m.length?(0,r.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)]",children:o("visibility.noGroupsHint")}):0===S.length?(0,r.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)]",children:o("visibility.allGroupsShared")}):(0,r.jsxs)("div",{className:"flex gap-1.5",children:[(0,r.jsxs)("select",{value:p,onChange:e=>f(Number(e.target.value)||""),className:"h-7 min-w-0 flex-1 rounded-[var(--radius-sm)] border border-[var(--border)] bg-[var(--background)] px-2 text-xs outline-none focus:border-brand-blue-400",children:[(0,r.jsx)("option",{value:"",children:o("visibility.selectGroup")}),S.map(e=>(0,r.jsx)("option",{value:e.id,children:e.name},e.id))]}),(0,r.jsxs)("select",{value:b,onChange:e=>v(e.target.value),className:"h-7 w-20 rounded-[var(--radius-sm)] border border-[var(--border)] bg-[var(--background)] px-2 text-xs outline-none focus:border-brand-blue-400",children:[(0,r.jsx)("option",{value:"reader",children:o("folders.accessLevelViewer")}),(0,r.jsx)("option",{value:"contributor",children:o("folders.accessLevelEditor")})]}),(0,r.jsx)("button",{type:"button",disabled:!p,onClick:A,className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-[var(--radius-sm)] bg-brand-blue-600 text-white hover:bg-brand-blue-700 disabled:opacity-40",children:(0,r.jsx)(w.A,{className:"h-3.5 w-3.5"})})]})]}),(0,r.jsxs)("div",{className:"flex justify-end gap-2 pt-1",children:[(0,r.jsx)(P.$,{variant:"outline",size:"sm",onClick:i,children:o("common.cancel")}),(0,r.jsx)(P.$,{size:"sm",disabled:g,onClick:N,className:_?"":"opacity-60",children:g?o("visibility.applying"):o("visibility.apply")})]})]})})}var W=s(52997),G=s(80167),Z=s(72264),B=s(21988),J=s(78619);let U="bluekiwi:workflows:folder-pane-width",X=[5,10,20,50];function Q({node:e}){let t=e.node_type,s="gate"===t?{Icon:o.A,className:"border-kiwi-600/30 bg-kiwi-100 text-kiwi-700"}:"loop"===t?{Icon:d.A,className:"border-[var(--border)] bg-transparent text-[var(--muted-foreground)]"}:{Icon:c.A,className:"border-brand-blue-600/20 bg-brand-blue-100 text-brand-blue-700"};return(0,r.jsxs)(z.E,{className:s.className,children:[(0,r.jsx)(s.Icon,{className:"h-3 w-3"}),(0,r.jsx)("span",{className:"truncate text-[11px]",children:e.title})]})}function Y({nodes:e}){let t=e.slice(0,5),s=e.length-5;return(0,r.jsxs)("div",{className:"flex items-center gap-1.5 overflow-hidden",children:[t.map((e,s)=>(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(Q,{node:e}),s<t.length-1&&(0,r.jsx)(u.A,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"})]},e.id)),s>0&&(0,r.jsxs)("span",{className:"shrink-0 text-[11px] text-[var(--muted-foreground)]",children:["+",s]})]})}function ee(){let e=(0,n.usePathname)(),t=(0,n.useRouter)(),s=(0,n.useSearchParams)(),{t:l}=(0,O.B)(),[o,d]=(0,a.useState)(()=>{let e=Number(s.get("page"));return Number.isFinite(e)&&e>0?e:1}),[c,u]=(0,a.useState)(()=>{let e=Number(s.get("page_size"));return X.includes(e)?e:10}),[z,T]=(0,a.useState)(()=>"grid"===s.get("view")?"grid":"list"),[D,q]=(0,a.useState)(()=>{let e=s.get("folder_id");return e?Number(e):null}),[F,V]=(0,a.useState)([]),[Q,ee]=(0,a.useState)(0),[et,es]=(0,a.useState)(!1),[er,ea]=(0,a.useState)(""),el=(0,a.useRef)(null),ei=(0,a.useRef)(null),en=(0,a.useRef)(null),eo=(0,a.useRef)(null),[ed,ec]=(0,a.useState)(!1),[eu,eh]=(0,a.useState)(!1),[em,ex]=(0,a.useState)(()=>{let e=window.localStorage.getItem(U),t=e?Number(e):NaN;return Number.isFinite(t)?Math.min(520,Math.max(240,t)):320}),[ep,ef]=(0,a.useState)(null);(0,a.useEffect)(()=>{let e=window.matchMedia("(min-width: 1024px)"),t=()=>ec(e.matches);return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,a.useEffect)(()=>{window.localStorage.setItem(U,String(em))},[em]),(0,a.useEffect)(()=>{if(!ep)return;let e=()=>ef(null);return document.addEventListener("click",e),document.addEventListener("contextmenu",e),()=>{document.removeEventListener("click",e),document.removeEventListener("contextmenu",e)}},[ep]);let[eb,ev]=(0,a.useState)(()=>s.get("q")??""),[ew,eg]=(0,a.useState)(()=>s.get("q")??""),[ey,ek]=(0,a.useState)(null),[ej,eN]=(0,a.useState)(!1),[eA,eC]=(0,a.useState)(null),{data:eS,loading:e_,refetch:eM}=(0,B.U)(()=>{let e=new URLSearchParams;return null!==D&&e.set("folder_id",String(D)),ew&&e.set("q",ew),`/api/workflows?${e}`},[D,ew]),{deleteTarget:e$,setDeleteTarget:ez,handleDelete:eP}=(0,J.b)({endpoint:e=>`/api/workflows/${e.id}`,onSuccess:async()=>{H.oR.success(l("workflows.deleted")),await eM()},fallbackMessage:l("common.deleteFailed")}),eE=Math.max(1,Math.ceil(eS.length/c)),eL=Math.min(o,eE),eI=eS.slice((eL-1)*c,eL*c);(0,a.useEffect)(()=>{let e=window.setTimeout(()=>{eg(eb.trim())},250);return()=>window.clearTimeout(e)},[eb]),(0,a.useEffect)(()=>{eo.current?.scrollTo({top:0,behavior:"smooth"})},[D,ew,c,z]),(0,a.useEffect)(()=>{let r=new URLSearchParams;null!==D&&r.set("folder_id",String(D)),eb.trim()&&r.set("q",eb.trim()),eL>1&&r.set("page",String(eL)),10!==c&&r.set("page_size",String(c)),"list"!==z&&r.set("view",z);let a=r.toString();a!==s.toString()&&t.replace(a?`${e}?${a}`:e,{scroll:!1})},[e,t,s,D,eb,eL,c,z]);let eR=(0,a.useCallback)(()=>{ev(""),d(1)},[]),eT=(0,a.useCallback)(e=>{q(t=>t===e?null:e),d(1)},[]),eD=null!==D?F.find(e=>e.id===D)??null:null,eq=(0,a.useMemo)(()=>{if(!eD)return[];let e=[],t=eD,s=new Set;for(;t&&!s.has(t.id)&&(s.add(t.id),e.unshift(t),null!==t.parent_id);){;t=F.find(e=>e.id===t.parent_id)}return e},[eD,F]),eH=(0,a.useCallback)(e=>{if(!e||!D||e===D)return[];let t=[],s=F.find(t=>t.id===e),r=new Set;for(;s&&s.id!==D&&!r.has(s.id)&&(r.add(s.id),t.unshift(s.is_system?l("folders.myWorkspace"):s.name),null!==s.parent_id);){;s=F.find(e=>e.id===s.parent_id)}return t},[D,F,l]),eF=(0,a.useCallback)(()=>{eD&&!eD.is_system&&(ea(eD.name),es(!0),setTimeout(()=>{el.current?.focus(),el.current?.select()},0))},[eD]),eO=(0,a.useCallback)(async()=>{if(!D||!er.trim())return void es(!1);es(!1);let e=await fetch(`/api/folders/${D}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:er.trim()})});if(e.ok)ee(e=>e+1);else{let t=await e.json().catch(()=>({}));H.oR.error(t?.error?.message??l("folders.renameFailed"))}},[D,er,l]),eV=(0,a.useCallback)(async(e,t)=>{(await fetch(`/api/workflows/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({folder_id:t})})).ok&&(H.oR.success(l("workflows.movedToFolder")),eM())},[eM,l]),eK=async e=>{(await fetch("/api/workflows",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:`${e.title} (${l("workflows.copy")})`,description:e.description,nodes:e.nodes.map(e=>({title:e.title,node_type:e.node_type,instruction_id:e.instruction_id,instruction:e.resolved_instruction}))})})).ok&&(H.oR.success(l("workflows.duplicated")),eM())},eW=(0,a.useCallback)(e=>{if(!ed||!en.current)return;e.preventDefault();let t=e.pointerId,s=e.currentTarget;eh(!0),s.setPointerCapture(t);let r=e=>{let t=en.current?.getBoundingClientRect();t&&ex(Math.min(520,Math.max(240,Math.round(e-t.left))))};r(e.clientX);let a=e=>{r(e.clientX)},l=()=>{eh(!1),document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",l)};document.body.style.cursor="col-resize",document.body.style.userSelect="none",window.addEventListener("pointermove",a),window.addEventListener("pointerup",l),window.addEventListener("pointercancel",l)},[ed]),eG=(0,a.useMemo)(()=>{if(ed)return{gridTemplateColumns:`${em}px 8px minmax(0,1fr)`}},[em,ed]),eZ=(0,a.useCallback)(e=>(0,r.jsxs)("div",{className:`flex items-center justify-end gap-2 ${"top"===e?"mb-4":"mt-6"}`,children:[(0,r.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:[l("workflows.results"),":"]}),(0,r.jsxs)(L.l6,{value:String(c),onValueChange:e=>{u(Number(e)),d(1)},children:[(0,r.jsx)(L.bq,{size:"sm",className:"w-20 bg-background",children:(0,r.jsx)(L.yv,{})}),(0,r.jsx)(L.gC,{align:"end",children:X.map(e=>(0,r.jsx)(L.eb,{value:String(e),children:e},e))})]}),(0,r.jsx)(P.$,{variant:"outline",size:"icon",className:"h-8 w-8",disabled:eL<=1,onClick:()=>d(e=>Math.max(1,e-1)),children:(0,r.jsx)(h.A,{className:"h-4 w-4"})}),(0,r.jsxs)("span",{className:"min-w-16 text-right text-xs text-[var(--muted-foreground)]",children:[eL," / ",eE]}),(0,r.jsx)(P.$,{variant:"outline",size:"icon",className:"h-8 w-8",disabled:eL>=eE,onClick:()=>d(e=>Math.min(eE,e+1)),children:(0,r.jsx)(m.A,{className:"h-4 w-4"})})]}),[eL,c,l,eE]);return(0,r.jsxs)("div",{className:"flex h-full min-h-0 flex-col",children:[(0,r.jsx)("div",{className:"sticky top-0 z-20 border-b border-[var(--border)] bg-[var(--background)]/95 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"flex h-14 items-center justify-between gap-4 px-5",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(x.A,{className:"h-5 w-5 text-[var(--muted-foreground)]"}),(0,r.jsx)("h1",{className:`text-2xl font-bold tracking-tight ${null!==D?"cursor-pointer hover:text-brand-blue-600 transition-colors":""}`,onClick:()=>{null!==D&&(q(null),es(!1),d(1))},children:l("workflows.title")}),eq.map((e,t)=>{let s=t===eq.length-1,a=e.is_system?l("folders.myWorkspace"):e.name;return(0,r.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(m.A,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]/50"}),s&&et?(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[(0,r.jsx)("input",{ref:el,value:er,onChange:e=>ea(e.target.value),onKeyDown:e=>{"Enter"===e.key&&eO(),"Escape"===e.key&&es(!1)},className:"h-8 rounded-[var(--radius-sm)] border border-brand-blue-400 bg-transparent px-2 text-lg font-bold outline-none ring-1 ring-brand-blue-400/30"}),(0,r.jsx)("button",{type:"button",onClick:()=>void eO(),className:"flex h-7 w-7 items-center justify-center rounded text-kiwi-600 hover:bg-kiwi-100",children:(0,r.jsx)(p.A,{className:"h-4 w-4"})}),(0,r.jsx)("button",{type:"button",onClick:()=>es(!1),className:"flex h-7 w-7 items-center justify-center rounded text-[var(--muted-foreground)] hover:bg-surface-soft",children:(0,r.jsx)(f.A,{className:"h-4 w-4"})})]}):(0,r.jsx)("span",{className:`text-2xl font-bold tracking-tight select-none ${!s?"cursor-pointer text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors":e.is_system?"cursor-default":"cursor-text"}`,title:s&&!e.is_system?l("folders.doubleClickToRename"):void 0,onClick:s?void 0:()=>{q(e.id),es(!1),d(1)},onDoubleClick:s&&!e.is_system?eF:void 0,children:a})]},e.id)})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("div",{className:"flex rounded-[var(--radius)] border border-[var(--border)] p-0.5",children:[(0,r.jsx)(P.$,{variant:"ghost",size:"icon",className:`h-7 w-7 ${"list"===z?"bg-[var(--card)] shadow-sm":""}`,onClick:()=>T("list"),title:l("common.listView"),children:(0,r.jsx)(b.A,{className:"h-3.5 w-3.5"})}),(0,r.jsx)(P.$,{variant:"ghost",size:"icon",className:`h-7 w-7 ${"grid"===z?"bg-[var(--card)] shadow-sm":""}`,onClick:()=>T("grid"),title:l("common.gridView"),children:(0,r.jsx)(v.A,{className:"h-3.5 w-3.5"})})]}),(0,r.jsx)(P.$,{asChild:!0,size:"sm",children:(0,r.jsxs)(i(),{href:D?`/workflows/new?folder_id=${D}`:"/workflows/new",children:[(0,r.jsx)(w.A,{className:"h-4 w-4"}),l("workflows.newWorkflow")]})}),(0,r.jsxs)(P.$,{size:"sm",variant:"outline",onClick:()=>eN(!0),children:[(0,r.jsx)(g.A,{className:"h-4 w-4"}),l("workflows.import")]})]})]})}),(0,r.jsxs)("div",{ref:en,className:`grid min-h-0 flex-1 grid-cols-1 lg:grid-cols-[320px_8px_minmax(0,1fr)] ${eu?"cursor-col-resize":""}`,style:eG,children:[(0,r.jsxs)("aside",{className:"flex min-h-0 flex-col border-b border-[var(--border)] bg-surface-soft/60 lg:border-r lg:border-b-0",children:[(0,r.jsxs)("div",{className:"shrink-0 border-b border-[var(--border)] px-4 py-4",children:[(0,r.jsx)("p",{className:"text-sm font-semibold",children:l("folders.title")}),(0,r.jsx)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:eD?eD.is_system?l("folders.myWorkspace"):eD.name:l("workflows.allWorkflows")})]}),(0,r.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto px-3 py-3",children:[(0,r.jsxs)("button",{onClick:()=>eT(null),onContextMenu:e=>{e.preventDefault(),ef({x:e.clientX,y:e.clientY})},className:`mb-1 flex w-full items-center gap-2 rounded-[var(--radius-sm)] px-2 py-1.5 text-sm transition-colors ${null===D?"bg-brand-blue-100 font-medium text-brand-blue-700":"text-[var(--muted-foreground)] hover:bg-surface-soft hover:text-[var(--foreground)]"}`,children:[(0,r.jsx)(y.A,{className:"h-3.5 w-3.5 shrink-0"}),l("workflows.allWorkflows")]}),(0,r.jsx)(G.z,{selectedId:D,onSelect:eT,onFoldersChange:V,onWorkflowDrop:eV,refreshKey:Q,onCreateRootRef:e=>{ei.current=e}}),ep&&(0,r.jsx)("div",{className:"fixed z-50 min-w-[140px] overflow-hidden rounded-[var(--radius-sm)] border border-[var(--border)] bg-[var(--card)] py-1 shadow-[var(--shadow-card)]",style:{top:ep.y,left:ep.x},onClick:()=>ef(null),children:(0,r.jsxs)("button",{className:"flex w-full items-center gap-2 px-3 py-1.5 text-sm hover:bg-surface-soft",onClick:()=>{ei.current?.(),ef(null)},children:[(0,r.jsx)(k.A,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),l("folders.new")]})})]})]}),(0,r.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":l("folders.title"),onPointerDown:eW,className:"hidden lg:flex items-stretch justify-center bg-transparent",children:(0,r.jsx)("div",{className:"group flex w-2 cursor-col-resize items-center justify-center",children:(0,r.jsx)("div",{className:"h-full w-px bg-[var(--border)] transition-colors group-hover:bg-brand-blue-400 group-active:bg-brand-blue-500"})})}),(0,r.jsx)("section",{ref:eo,className:"min-h-0 overflow-y-auto",children:(0,r.jsxs)("div",{className:"px-5 py-5",children:[(0,r.jsx)("div",{className:"sticky top-0 z-10 -mx-5 mb-4 border-b border-[var(--border)] bg-[var(--background)]/95 px-5 py-3 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",children:[(0,r.jsxs)("div",{className:"relative w-full max-w-md",children:[(0,r.jsx)(j.A,{className:"pointer-events-none absolute top-1/2 left-2.5 h-3.5 w-3.5 -translate-y-1/2 text-[var(--muted-foreground)]"}),(0,r.jsx)("input",{type:"text",value:eb,onChange:e=>{ev(e.target.value),d(1)},placeholder:l("common.search"),className:"h-9 w-full rounded-[var(--radius-sm)] border border-[var(--border)] bg-transparent pl-8 pr-7 text-sm outline-none placeholder:text-[var(--muted-foreground)] focus:border-brand-blue-400 focus:ring-1 focus:ring-brand-blue-400/30"}),eb!==ew?(0,r.jsx)("span",{className:"pointer-events-none absolute top-1/2 right-2 -translate-y-1/2 text-[var(--muted-foreground)]",children:(0,r.jsx)(N.A,{className:"h-3.5 w-3.5 animate-spin"})}):eb&&(0,r.jsx)("button",{type:"button",onClick:eR,className:"absolute top-1/2 right-2 -translate-y-1/2 text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,r.jsx)(f.A,{className:"h-3.5 w-3.5"})})]}),(0,r.jsx)("div",{className:"shrink-0",children:eZ("top")})]})}),(eb||null!==D)&&(0,r.jsxs)("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[eb&&(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-brand-blue-300/50 bg-brand-blue-50 px-2.5 py-0.5 text-xs text-brand-blue-700",children:[(0,r.jsx)(j.A,{className:"h-3 w-3"}),eb,(0,r.jsx)("button",{onClick:eR,className:"ml-0.5 opacity-60 hover:opacity-100",children:(0,r.jsx)(f.A,{className:"h-3 w-3"})})]}),(0,r.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:[eS.length,l("workflows.results")]})]}),e_?(0,r.jsx)(E.Zp,{children:(0,r.jsx)(E.Wu,{className:"py-10 text-center text-sm text-[var(--muted-foreground)]",children:l("common.loading")})}):0===eS.length?(0,r.jsx)($.p,{icon:x.A,title:l("workflows.empty"),description:l("workflows.emptyDesc"),actionLabel:l("workflows.newWorkflow"),actionHref:D?`/workflows/new?folder_id=${D}`:"/workflows/new"}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"grid"===z?"grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-3":"flex flex-col gap-2",children:eI.map(e=>{let s,a;return"list"===z?(0,r.jsx)(E.Zp,{className:"cursor-pointer gap-0 py-0 transition-shadow hover:shadow-soft",draggable:!0,onDragStart:t=>t.dataTransfer.setData("workflowId",String(e.id)),onClick:()=>t.push(`/workflows/${e.id}`),children:(0,r.jsxs)(E.Wu,{className:"px-4 py-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("div",{className:"min-w-0 flex-1",children:(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("p",{className:"truncate text-sm font-semibold",children:0===(s=eH(e.folder_id)).length?e.title:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("span",{className:"text-xs font-normal text-[var(--muted-foreground)]/60",children:[s.join(" > ")," > "]}),e.title]})}),(0,r.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),ek({id:e.id,title:e.title,override:e.visibility_override??null})},className:"rounded opacity-60 hover:opacity-100",title:l("visibility.settings"),children:(0,r.jsx)(I.w,{visibility:e.visibility_override??"inherit",iconOnly:!0})})]})}),(0,r.jsx)("p",{className:"shrink-0 text-[11px] text-[var(--muted-foreground)]",children:new Date(e.created_at).toLocaleDateString("ko-KR")}),(0,r.jsxs)(Z.rI,{children:[(0,r.jsx)(Z.ty,{asChild:!0,children:(0,r.jsx)(P.$,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:e=>e.stopPropagation(),children:(0,r.jsx)(A.A,{className:"h-4 w-4"})})}),(0,r.jsxs)(Z.SQ,{align:"end",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)(Z._2,{onClick:()=>t.push(`/workflows/${e.id}/edit`),children:[(0,r.jsx)(C.A,{className:"mr-2 h-3.5 w-3.5"}),l("common.edit")]}),(0,r.jsxs)(Z._2,{onClick:()=>eK(e),children:[(0,r.jsx)(S.A,{className:"mr-2 h-3.5 w-3.5"}),l("common.duplicate")]}),(0,r.jsxs)(Z._2,{onClick:()=>eC({id:e.id,title:e.title,folderId:e.folder_id??null}),children:[(0,r.jsx)(_.A,{className:"mr-2 h-3.5 w-3.5"}),l("workflows.export")]}),(0,r.jsx)(Z.mB,{}),(0,r.jsxs)(Z._2,{className:"text-[var(--destructive)]",onClick:()=>ez(e),children:[(0,r.jsx)(M.A,{className:"mr-2 h-3.5 w-3.5"}),l("common.delete")]})]})]})]}),(0,r.jsx)("div",{className:"mt-2 overflow-hidden",children:(0,r.jsx)(Y,{nodes:e.nodes})})]})},e.id):(0,r.jsx)(E.Zp,{className:"cursor-pointer gap-0 py-0 transition-shadow hover:shadow-soft",draggable:!0,onDragStart:t=>t.dataTransfer.setData("workflowId",String(e.id)),onClick:()=>t.push(`/workflows/${e.id}`),children:(0,r.jsxs)(E.Wu,{className:"flex h-full flex-col justify-between p-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("p",{className:"truncate text-sm font-semibold",children:0===(a=eH(e.folder_id)).length?e.title:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("span",{className:"text-xs font-normal text-[var(--muted-foreground)]/60",children:[a.join(" > ")," > "]}),e.title]})}),(0,r.jsx)("p",{className:"mt-0.5 line-clamp-1 text-xs text-[var(--muted-foreground)]",children:e.description||"\xa0"}),(0,r.jsx)("div",{className:"mt-1.5",children:(0,r.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation(),ek({id:e.id,title:e.title,override:e.visibility_override??null})},className:"rounded opacity-60 hover:opacity-100",title:l("visibility.settings"),children:(0,r.jsx)(I.w,{visibility:e.visibility_override??"inherit",iconOnly:!0})})})]}),(0,r.jsxs)(Z.rI,{children:[(0,r.jsx)(Z.ty,{asChild:!0,children:(0,r.jsx)(P.$,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:e=>e.stopPropagation(),children:(0,r.jsx)(A.A,{className:"h-4 w-4"})})}),(0,r.jsxs)(Z.SQ,{align:"end",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)(Z._2,{onClick:()=>t.push(`/workflows/${e.id}/edit`),children:[(0,r.jsx)(C.A,{className:"mr-2 h-3.5 w-3.5"}),l("common.edit")]}),(0,r.jsxs)(Z._2,{onClick:()=>eK(e),children:[(0,r.jsx)(S.A,{className:"mr-2 h-3.5 w-3.5"}),l("common.duplicate")]}),(0,r.jsxs)(Z._2,{onClick:()=>eC({id:e.id,title:e.title,folderId:e.folder_id??null}),children:[(0,r.jsx)(_.A,{className:"mr-2 h-3.5 w-3.5"}),l("workflows.export")]}),(0,r.jsx)(Z.mB,{}),(0,r.jsxs)(Z._2,{className:"text-[var(--destructive)]",onClick:()=>ez(e),children:[(0,r.jsx)(M.A,{className:"mr-2 h-3.5 w-3.5"}),l("common.delete")]})]})]})]}),(0,r.jsx)("div",{className:"mt-3",children:(0,r.jsx)(Y,{nodes:e.nodes})})]}),(0,r.jsxs)("p",{className:"mt-3 text-[11px] text-[var(--muted-foreground)]",children:[e.nodes.length,l("workflows.nodes")," \xb7"," ",new Date(e.created_at).toLocaleDateString("ko-KR")]})]})},e.id)})}),eZ("bottom")]})]})})]}),(0,r.jsx)(R.o,{target:e$,title:l("workflows.deleteConfirm"),description:l("workflows.deleteDesc",{title:e$?.title??""}),onCancel:()=>ez(null),onConfirm:eP}),(0,r.jsx)(K,{workflowId:ey?.id??null,workflowTitle:ey?.title??"",currentOverride:ey?.override??null,open:null!==ey,onClose:()=>ek(null),onUpdate:eM}),(0,r.jsx)(W.Z,{open:ej,onClose:()=>eN(!1),mode:"import",folderId:D,onImported:e=>t.push(`/workflows/${e}`)}),eA&&(0,r.jsx)(W.Z,{open:null!==eA,onClose:()=>eC(null),mode:"export",workflowId:eA.id,workflowTitle:eA.title,folderId:eA.folderId})]})}},63393:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("folder-plus",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]])},67635:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},73321:(e,t,s)=>{"use strict";var r=s(74645);s.o(r,"useParams")&&s.d(t,{useParams:function(){return r.useParams}}),s.o(r,"usePathname")&&s.d(t,{usePathname:function(){return r.usePathname}}),s.o(r,"useRouter")&&s.d(t,{useRouter:function(){return r.useRouter}}),s.o(r,"useSearchParams")&&s.d(t,{useSearchParams:function(){return r.useSearchParams}})},96035:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]])},97233:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(82240).A)("link-2",[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]])}},e=>{e.O(0,[8409,7262,6095,8500,7659,7050,7533,6073,2360,2997,4663,8441,3794,7358],()=>e(e.s=6015)),_N_E=e.O()}]);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blue-kiwi",
3
- "version": "1.2.4",
3
+ "version": "1.2.5",
4
4
  "private": true,
5
5
  "workspaces": [
6
6
  "packages/*"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bluekiwi",
3
- "version": "1.2.4",
3
+ "version": "1.2.5",
4
4
  "description": "BlueKiwi CLI β€” install MCP client and skills into your agent runtime",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2360],{42360:(e,t,s)=>{s.d(t,{I18nProvider:()=>n,B:()=>l});var i=s(95155),o=s(12115);let a={ko:JSON.parse('{"common":{"save":"μ €μž₯","cancel":"μ·¨μ†Œ","delete":"μ‚­μ œ","edit":"νŽΈμ§‘","preview":"미리보기","all":"전체","duplicate":"볡제","create":"생성","add":"μΆ”κ°€","close":"λ‹«κΈ°","loading":"λ‘œλ”© 쀑...","confirm":"확인","search":"검색...","noResults":"κ²°κ³Ό μ—†μŒ","deleteFailed":"μ‚­μ œμ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","listView":"리슀트 보기","gridView":"κ·Έλ¦¬λ“œ 보기","copy":"볡사"},"tutorial":{"heroEyebrow":"Claude, Codex λ“± AI μ½”λ”© 도ꡬ μ‚¬μš©μž 맀뉴얼","tabOverview":"κ°œμš”","tabGuides":"μ‹€μ „ κ°€μ΄λ“œ","guidesBack":"← λͺ©λ‘μœΌλ‘œ","guidesLoading":"λ‘œλ”© 쀑...","guidesEmpty":"λ“±λ‘λœ κ°€μ΄λ“œκ°€ μ—†μŠ΅λ‹ˆλ‹€.","tryWorkflowAdd":"이 μ›Œν¬ν”Œλ‘œ λ‚΄ μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ— μΆ”κ°€ν•˜κΈ°","tryWorkflowLoading":"μ›Œν¬ν”Œλ‘œ λΆˆλŸ¬μ˜€λŠ” 쀑...","heroTitle":"μž‘μ—… 흐름을 λ§Œλ“œλŠ” κ°€μž₯ 짧은 경둜","heroDesc":"BlueKiwiμ—μ„œ μ§€μΉ¨ μž‘μ„±, μ›Œν¬ν”Œλ‘œ 쑰립, μ‹€ν–‰, κ²°κ³Ό ν™•μΈκΉŒμ§€ μ‹€μ œ μ‚¬μš© 흐름을 λΉ λ₯΄κ²Œ 읡힐 수 μžˆλ„λ‘ κ΅¬μ„±ν•œ μ•ˆλ‚΄μ„œμž…λ‹ˆλ‹€.","navStart":"μ‹œμž‘ν•˜κΈ°","navInstructions":"μ§€μΉ¨ λ§Œλ“€κΈ°","navWorkflows":"μ›Œν¬ν”Œλ‘œ λ§Œλ“€κΈ°","navExecute":"μ‹€ν–‰ν•˜κΈ°","navMonitor":"νƒœμŠ€ν¬ 확인","navExample":"μ‹€μ „ μ˜ˆμ‹œ","navMcpLoop":"MCP μžλ™ν™”","navTips":"운영 팁","s1Intro":"BlueKiwi의 κΈ°λ³Έ 흐름은 λ‹¨μˆœν•©λ‹ˆλ‹€. λ¨Όμ € 지침을 λ§Œλ“€κ³ , κ·Έ 지침듀을 μ›Œν¬ν”Œλ‘œμ— λ°°μΉ˜ν•œ λ’€, μ‹€ν–‰ κ²°κ³Όλ₯Ό νƒœμŠ€ν¬ ν™”λ©΄μ—μ„œ ν™•μΈν•©λ‹ˆλ‹€.","s1Screens":"μ£Όμš” ν™”λ©΄","s1InstructionsDesc":"지침을 μž‘μ„±ν•˜κ³  κ΄€λ¦¬ν•©λ‹ˆλ‹€.","s1WorkflowsDesc":"μ‹€ν–‰ μˆœμ„œλ₯Ό μ„€κ³„ν•©λ‹ˆλ‹€.","s1TasksDesc":"μ‹€ν–‰ 결과와 μƒνƒœλ₯Ό ν™•μΈν•©λ‹ˆλ‹€.","s1CredentialsDesc":"μ™ΈλΆ€ μ„œλΉ„μŠ€ μ ‘κ·Ό 정보λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.","s1AttachmentsTitle":"λ…Έλ“œ 첨뢀 파일","s1AttachmentsDesc":"μ›Œν¬ν”Œλ‘œ λ…Έλ“œμ— 슀크립트, 레퍼런슀 λ¬Έμ„œ, μ„€μ • 파일 등을 첨뢀할 수 μžˆμŠ΅λ‹ˆλ‹€. μ—μ΄μ „νŠΈλŠ” μ‹€ν–‰ 쀑 ν•„μš”ν•œ 첨뢀 νŒŒμΌμ„ μžλ™μœΌλ‘œ λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€.","s1Order":"ꢌμž₯ μ‚¬μš© μˆœμ„œ","s1Order1":"1. μ§€μΉ¨μ—μ„œ μž‘μ—… λ‹¨μœ„λ₯Ό λ¨Όμ € μ •μ˜ν•©λ‹ˆλ‹€.","s1Order2":"2. μ›Œν¬ν”Œλ‘œμ—μ„œ μ‹€ν–‰ μˆœμ„œλ₯Ό μ‘°λ¦½ν•©λ‹ˆλ‹€.","s1Order3":"3. ν•„μš”ν•˜λ©΄ ν¬λ¦¬λ΄μ…œμ„ μ—°κ²°ν•©λ‹ˆλ‹€.","s1Order4":"4. μ‹€ν–‰ ν›„ νƒœμŠ€ν¬μ—μ„œ μ§„ν–‰ 상황과 κ²°κ³Όλ₯Ό ν™•μΈν•©λ‹ˆλ‹€.","s1WhenToUse":"μ–΄λ–€ 일을 BlueKiwi에 λ§‘κΈ°λ©΄ 쒋은가","s1Use1":"반볡적으둜 같은 점검 절차λ₯Ό μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ” 일","s1Use2":"μ‚¬λžŒμ˜ μŠΉμΈμ΄λ‚˜ 응닡이 쀑간에 ν•„μš”ν•œ 닀단계 μž‘μ—…","s1Use3":"μ‹€ν–‰ κ³Όμ •κ³Ό κ²°κ³Όλ₯Ό λ‚˜μ€‘μ— λ‹€μ‹œ 좔적해야 ν•˜λŠ” μž‘μ—…","s1FoldersTitle":"폴더와 곡개 λ²”μœ„","s1FoldersDesc":"μ›Œν¬ν”Œλ‘œμ™€ 지침은 ν΄λ”λ‘œ μ •λ¦¬λ©λ‹ˆλ‹€. μ‚¬μ΄λ“œλ°”μ—μ„œ 폴더λ₯Ό ν΄λ¦­ν•˜λ©΄ ν•˜μœ„ ν΄λ”μ˜ ν•­λͺ©λ„ ν•¨κ»˜ ν‘œμ‹œλ©λ‹ˆλ‹€.","s1VisPersonal":"개인 β€” λ‚˜λ§Œ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.","s1VisGroup":"κ·Έλ£Ή β€” 같은 κ·Έλ£Ή κ΅¬μ„±μ›μ—κ²Œ κ³΅μœ λ©λ‹ˆλ‹€.","s1VisPublic":"곡개 β€” λͺ¨λ“  μ‚¬μš©μžκ°€ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.","s1VisInherit":"μƒμœ„ 따름 β€” μƒμœ„ ν΄λ”μ˜ 곡개 λ²”μœ„λ₯Ό κ·ΈλŒ€λ‘œ λ”°λ¦…λ‹ˆλ‹€.","s1VisTip":"폴더 μ˜† μ•„μ΄μ½˜μœΌλ‘œ 곡개 λ²”μœ„λ₯Ό λΉ λ₯΄κ²Œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.","s2Intro":"지침은 μ›Œν¬ν”Œλ‘œμ˜ μ΅œμ†Œ λ‹¨μœ„μž…λ‹ˆλ‹€. ν•œ μ§€μΉ¨μ—λŠ” ν•˜λ‚˜μ˜ λͺ©μ κ³Ό ν•˜λ‚˜μ˜ κΈ°λŒ€ 결과만 λ‹΄λŠ” 편이 μ’‹μŠ΅λ‹ˆλ‹€.","s2Good":"쒋은 μ§€μΉ¨ μ˜ˆμ‹œ","s2GoodText":"ν¬λ¦¬λ΄μ…œ μΉ΄λ“œ λͺ©λ‘μ„ μ κ²€ν•˜κ³ , μ„œλΉ„μŠ€λͺ… 쀑볡 여뢀와 빈 μ„€λͺ…이 μžˆλŠ” ν•­λͺ©μ„ ν‘œλ‘œ μ •λ¦¬ν•©λ‹ˆλ‹€.","s2Bad":"ν”Όν•΄μ•Ό ν•  μ§€μΉ¨","s2BadText":"전체 μ‹œμŠ€ν…œμ„ μ•Œμ•„μ„œ κ²€ν† ν•˜κ³  ν•„μš”ν•œ λͺ¨λ“  κ±Έ μˆ˜μ •ν•©λ‹ˆλ‹€.","s2Tips":"지침을 잘 μ“°λŠ” κΈ°μ€€","s2Tip1":"무엇을 νŒλ‹¨ν•΄μ•Ό ν•˜λŠ”μ§€λ³΄λ‹€ 무엇을 μ‚°μΆœν•΄μ•Ό ν•˜λŠ”μ§€λ₯Ό λ¨Όμ € μ”λ‹ˆλ‹€.","s2Tip2":"λͺ¨ν˜Έν•œ ν‘œν˜„ λŒ€μ‹  체크 기쀀을 μ μŠ΅λ‹ˆλ‹€. 예: 보기 μ’‹κ²Œκ°€ μ•„λ‹ˆλΌ 쀑볡 μ„œλΉ„μŠ€λͺ… μ—†μŒ.","s2Tip3":"κ²°κ³Ό ν˜•μ‹μ„ μ§€μ •ν•©λ‹ˆλ‹€. 예: bullet list, ν‘œ, μš”μ•½ 문단, 파일 경둜.","s3Intro":"μ›Œν¬ν”Œλ‘œλŠ” 지침을 μˆœμ„œλŒ€λ‘œ μ—°κ²°ν•œ μ‹€ν–‰ μ„€κ³„λ„μž…λ‹ˆλ‹€. λ…Έλ“œ 수λ₯Ό λŠ˜λ¦¬κΈ°λ³΄λ‹€, 승인 지점과 반볡 지점을 μ–΄λ”” λ‘˜μ§€ κ²°μ •ν•˜λŠ” 것이 더 μ€‘μš”ν•©λ‹ˆλ‹€.","s3NodeTypes":"λ…Έλ“œ μœ ν˜• μ΄ν•΄ν•˜κΈ°","s3ActionDesc":"μžλ™μœΌλ‘œ λ°”λ‘œ μˆ˜ν–‰λ˜λŠ” 일반 μ‹€ν–‰ λ‹¨κ³„μž…λ‹ˆλ‹€.","s3GateDesc":"μ‚¬μš©μž ν™•μΈμ΄λ‚˜ 응닡이 ν•„μš”ν•œ 승인 λ‹¨κ³„μž…λ‹ˆλ‹€.","s3LoopDesc":"쑰건이 만쑱될 λ•ŒκΉŒμ§€ 반볡 μ κ²€ν•˜λŠ” λ‹¨κ³„μž…λ‹ˆλ‹€.","s3Recommended":"처음 λ§Œλ“œλŠ” μ‚¬λžŒμ—κ²Œ ꢌμž₯ν•˜λŠ” ꡬ쑰","s3Rec1":"1. Action: ν˜„μž¬ μƒνƒœλ₯Ό μˆ˜μ§‘ν•©λ‹ˆλ‹€.","s3Rec2":"2. Action: λ¬Έμ œλ‚˜ κ°œμ„  포인트λ₯Ό μ •λ¦¬ν•©λ‹ˆλ‹€.","s3Rec3":"3. Gate: μ‚¬μš©μžκ°€ λ°©ν–₯을 ν™•μ •ν•©λ‹ˆλ‹€.","s3Rec4":"4. Action: ν™•μ •λœ λ°©ν–₯으둜 결과물을 λ§Œλ“­λ‹ˆλ‹€.","s4Intro":"μ›Œν¬ν”Œλ‘œ μƒμ„Έμ˜ μ‹€ν–‰ λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ 2단계 λ‹€μ΄μ–Όλ‘œκ·Έκ°€ μ—΄λ¦½λ‹ˆλ‹€. 제λͺ©\xb7μ»¨ν…μŠ€νŠΈλ₯Ό μž…λ ₯ν•˜κ³ , μ‚¬μš© 쀑인 AI 도ꡬ(Claude Code, Codex CLI λ“±)λ₯Ό μ„ νƒν•˜λ©΄ 볡사할 수 μžˆλŠ” λͺ…λ Ήμ–΄κ°€ μžλ™μœΌλ‘œ μƒμ„±λ©λ‹ˆλ‹€. ν•΄λ‹Ή λͺ…λ Ήμ–΄λ₯Ό μ—μ΄μ „νŠΈμ—κ²Œ λΆ™μ—¬λ„£μœΌλ©΄ νƒœμŠ€ν¬κ°€ 생성\xb7μ‹€ν–‰λ©λ‹ˆλ‹€.","s4PreCheck":"μ‹€ν–‰ 전에 확인할 것","s4Pre1":"ν¬λ¦¬λ΄μ…œμ΄ ν•„μš”ν•œ 단계라면 μ—°κ²° μ—¬λΆ€λ₯Ό λ¨Όμ € ν™•μΈν•©λ‹ˆλ‹€.","s4Pre2":"반볡 단계가 μžˆλ‹€λ©΄ μ’…λ£Œ 쑰건이 λΆ„λͺ…ν•œμ§€ ν™•μΈν•©λ‹ˆλ‹€.","s4Pre3":"승인 단계가 μžˆλ‹€λ©΄ λˆ„κ°€ 응닡할지 운영 방식을 μ •ν•΄λ‘‘λ‹ˆλ‹€.","s4HitlTitle":"승인 단계(HITL) μ‘λ‹΅ν•˜κΈ°","s4HitlDesc":"Gate λ…Έλ“œμ— HITL(μ‚¬λžŒ κ°œμž…)이 μ„€μ •λ˜μ–΄ 있으면, μ—μ΄μ „νŠΈκ°€ μž‘μ—…μ„ 마친 λ’€ μ‚¬μš©μžμ˜ μŠΉμΈμ„ κΈ°λ‹€λ¦½λ‹ˆλ‹€.","s4Hitl1":"νƒœμŠ€ν¬ μƒμ„Έμ—μ„œ \'승인 λŒ€κΈ°\' ν‘œμ‹œκ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.","s4Hitl2":"κ²°κ³Όλ₯Ό ν™•μΈν•œ λ’€ 승인 λ²„νŠΌμ„ 눌러 λ‹€μŒ λ‹¨κ³„λ‘œ μ§„ν–‰ν•©λ‹ˆλ‹€.","s4Hitl3":"κ²°κ³Όκ°€ λΆ€μ‘±ν•˜λ©΄ 되감기(rewind)둜 이전 단계뢀터 λ‹€μ‹œ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.","s4StatusTitle":"μ‹€ν–‰ 쀑 자주 λ³΄λŠ” μƒνƒœ","s4Running":"μ‹€ν–‰ 쀑","s4RunningDesc":"ν˜„μž¬ 단계가 μ§„ν–‰ 쀑이며 μƒˆ λ‘œκ·Έκ°€ 계속 μŒ“μž…λ‹ˆλ‹€.","s4Waiting":"λŒ€κΈ°","s4WaitingDesc":"μ‚¬μš©μž 응닡 λ˜λŠ” μ™ΈλΆ€ 쑰건을 κΈ°λ‹€λ¦¬λŠ” μƒνƒœμž…λ‹ˆλ‹€.","s4Failed":"μ‹€νŒ¨","s4FailedDesc":"쀑단 원인을 ν™•μΈν•˜κ³  ν•„μš”ν•˜λ©΄ λ‹€μ‹œ μ‹€ν–‰ν•˜κ±°λ‚˜ λ˜κ°μŠ΅λ‹ˆλ‹€.","s5Intro":"νƒœμŠ€ν¬ νŽ˜μ΄μ§€μ—μ„œλŠ” λͺ©λ‘κ³Ό 상세 두 화면을 μ˜€κ°€λ©° μƒνƒœλ₯Ό λ΄…λ‹ˆλ‹€. λͺ©λ‘μ€ ν˜„μž¬ 상황을 ν›‘λŠ” μš©λ„μ΄κ³ , μƒμ„ΈλŠ” ν•œ μ‹€ν–‰ 건을 깊게 λ³΄λŠ” μš©λ„μž…λ‹ˆλ‹€.","s5ListTitle":"λͺ©λ‘ ν™”λ©΄μ—μ„œ λ³΄λŠ” 것","s5List1":"μ–΄λ–€ μ›Œν¬ν”Œλ‘œμ—μ„œ μƒμ„±λœ νƒœμŠ€ν¬μΈμ§€","s5List2":"ν˜„μž¬ μƒνƒœμ™€ μ§„ν–‰λ₯ μ΄ μ–΄λŠ 정도인지","s5List3":"κ°€μž₯ 졜근 λ‹¨κ³„μ—μ„œ μ–΄λ–€ κ²°κ³Όκ°€ λ‚˜μ™”λŠ”μ§€","s5DetailTitle":"상세 ν™”λ©΄μ—μ„œ λ³΄λŠ” 것","s5Detail1":"μ™Όμͺ½ νƒ€μž„λΌμΈ: μ–΄λŠ λ‹¨κ³„κΉŒμ§€ μ™„λ£ŒλλŠ”μ§€","s5Detail2":"였λ₯Έμͺ½ κ²°κ³Ό νŒ¨λ„: μ‹€μ œ μ‚°μΆœλ¬Ό, ꡬ쑰화 좜λ ₯, μ½”λ©˜νŠΈ","s5Detail3":"반볡 단계인 경우: 이전 반볡과 μ΅œμ‹  반볡의 차이","s6Intro":"처음 μ¨λ³΄λŠ” μ‚¬μš©μžλΌλ©΄ 좔상적인 μ„€λͺ…보닀 μ‹€μ œ ν•œ 번의 운영 흐름을 따라가 λ³΄λŠ” 편이 훨씬 μ‰½μŠ΅λ‹ˆλ‹€. μ•„λž˜λŠ” UI 점검 μ›Œν¬ν”Œλ‘œλ₯Ό λ§Œλ“œλŠ” κ°€μž₯ ν˜„μ‹€μ μΈ μ˜ˆμ‹œμž…λ‹ˆλ‹€.","s6Title":"직접 해보기: ν¬λ¦¬λ΄μ…œ μΉ΄λ“œ 점검 μ›Œν¬ν”Œλ‘œ","s6Step1Title":"Step 1. μ§€μΉ¨ 3개λ₯Ό λ§Œλ“­λ‹ˆλ‹€","s6Step1_1":"ν˜„μž¬ ν¬λ¦¬λ΄μ…œ μΉ΄λ“œ UIλ₯Ό μ κ²€ν•˜κ³  문제λ₯Ό λͺ©λ‘ν™”ν•œλ‹€","s6Step1_2":"문제λ₯Ό μ€‘μš”λ„ 순으둜 μ •λ¦¬ν•˜κ³  μˆ˜μ • μš°μ„ μˆœμœ„λ₯Ό μ œμ•ˆν•œλ‹€","s6Step1_3":"μˆ˜μ • ν›„ λ‹€μ‹œ μ κ²€ν•˜κ³  남은 이슈λ₯Ό μš”μ•½ν•œλ‹€","s6Step2Title":"Step 2. μ›Œν¬ν”Œλ‘œλ₯Ό μ‘°λ¦½ν•©λ‹ˆλ‹€","s6Step2_1":"1. Action: ν˜„μž¬ μƒνƒœ 점검","s6Step2_2":"2. Gate: 이 쀑 무엇을 λ¨Όμ € κ³ μΉ μ§€ μ‚¬μš©μž 확인","s6Step2_3":"3. Action: μ„ νƒλœ λ°©ν–₯으둜 μˆ˜μ •μ•ˆ 정리","s6Step2_4":"4. Loop: μˆ˜μ • ν›„ λ‹€μ‹œ μ κ²€ν•˜κ³  μ’…λ£Œ μ—¬λΆ€ κ²°μ •","s6Step3Title":"Step 3. μ‹€ν–‰ μ‹œ μ΄λ ‡κ²Œ μ μŠ΅λ‹ˆλ‹€","s6Step3Desc":"νƒœμŠ€ν¬ μ»¨ν…μŠ€νŠΈμ—λŠ” μ΄λ ‡κ²Œ ꡬ체적으둜 μ λŠ” 편이 μ’‹μŠ΅λ‹ˆλ‹€.","s6Step3Example":"ν¬λ¦¬λ΄μ…œ νŽ˜μ΄μ§€μ˜ μΉ΄λ“œ UIλ₯Ό μ κ²€ν•©λ‹ˆλ‹€. μ„œλΉ„μŠ€λͺ… 쀑볡 ν‘œμ‹œ, μ•‘μ…˜ 메뉴 μœ„μΉ˜, μ„€λͺ… ν…μŠ€νŠΈ 밀도, νŽΈμ§‘ μ§„μž… 방식 μ€‘μ‹¬μœΌλ‘œ 보고 μˆ˜μ • μš°μ„ μˆœμœ„λ₯Ό μ •λ¦¬ν•©λ‹ˆλ‹€.","s6Step4Title":"Step 4. μ‹€ν–‰ ν›„ νƒœμŠ€ν¬μ—μ„œ 확인할 것","s6Step4_1":"1. λͺ©λ‘μ—μ„œ μ–΄λ–€ μ›Œν¬ν”Œλ‘œκ°€ μ–΄λ–€ μƒνƒœμΈμ§€ λΉ λ₯΄κ²Œ ν™•μΈν•©λ‹ˆλ‹€.","s6Step4_2":"2. μƒμ„Έμ—μ„œ 각 단계 결과와 μ½”λ©˜νŠΈλ₯Ό μ½μŠ΅λ‹ˆλ‹€.","s6Step4_3":"3. Gate 단계가 λ‚˜μ˜€λ©΄ λ°”λ‘œ μ‘λ‹΅ν•΄μ„œ 흐름을 μ΄μ–΄κ°‘λ‹ˆλ‹€.","s6Step4_4":"4. κ²°κ³Όκ°€ λ§ˆμŒμ— λ“€μ§€ μ•ŠμœΌλ©΄ rewind ν›„ λ‹€μ‹œ μ§„ν–‰ν•©λ‹ˆλ‹€.","s7Title":"MCP 연동","s7Intro":"BlueKiwi MCP μ„œλ²„λ₯Ό AI 도ꡬ에 μ—°κ²°ν•˜λ©΄ μ›Œν¬ν”Œλ‘œ 싀행을 μžλ™ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ‚¬λžŒμ΄ μ›Ή UIμ—μ„œ ν•˜λŠ” 일을 μ—μ΄μ „νŠΈκ°€ λŒ€μ‹  μˆ˜ν–‰ν•©λ‹ˆλ‹€.","s7SetupTitle":"MCP μ„œλ²„ μ—°κ²°ν•˜κΈ°","s7Setup1":"npm install -g bluekiwi 둜 CLIλ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€.","s7Setup2":"κ΄€λ¦¬μžκ°€ 보낸 μ΄ˆλŒ€ λ§ν¬μ—μ„œ 토큰을 λ³΅μ‚¬ν•©λ‹ˆλ‹€.","s7Setup3":"bluekiwi accept <토큰> -s <μ„œλ²„URL> 둜 μ΄ˆλŒ€ 기반 연결을 μ™„λ£Œν•©λ‹ˆλ‹€.","s7Setup4":"API ν‚€κ°€ μžˆλ‹€λ©΄ bluekiwi init -p <ν”„λ‘œν•„> -s <μ„œλ²„URL> -k <APIν‚€> 둜 직접 μ—°κ²°ν•˜κ±°λ‚˜ MCP 섀정을 κ°±μ‹ ν•©λ‹ˆλ‹€.","s7Setup5":"bluekiwi status 둜 ν˜„μž¬ ν™œμ„± ν”„λ‘œν•„κ³Ό μ—°κ²° μƒνƒœλ₯Ό ν™•μΈν•©λ‹ˆλ‹€.","s7ToolsTitle":"μ£Όμš” MCP 도ꡬ","s7ToolStartWorkflow":"μ›Œν¬ν”Œλ‘œ ID둜 μƒˆ νƒœμŠ€ν¬λ₯Ό μ‹œμž‘ν•©λ‹ˆλ‹€.","s7ToolAdvance":"λ‹€μŒ λ‹¨κ³„μ˜ μ§€μΉ¨ 정보λ₯Ό λ°›μ•„μ˜΅λ‹ˆλ‹€.","s7ToolExecuteStep":"ν˜„μž¬ λ‹¨κ³„μ˜ μ‹€ν–‰ κ²°κ³Όλ₯Ό μ œμΆœν•©λ‹ˆλ‹€.","s7ToolRequestApproval":"HITL λ‹¨κ³„μ—μ„œ μ‚¬λžŒμ˜ μŠΉμΈμ„ μš”μ²­ν•©λ‹ˆλ‹€.","s7ToolCompleteTask":"λͺ¨λ“  단계가 λλ‚˜λ©΄ νƒœμŠ€ν¬λ₯Ό μ™„λ£Œν•©λ‹ˆλ‹€.","s7ToolRewind":"이전 λ‹¨κ³„λ‘œ λ˜κ°μ•„ λ‹€μ‹œ μ‹€ν–‰ν•©λ‹ˆλ‹€.","s7ToolHeartbeat":"μ‹€ν–‰ 쀑 μ§„ν–‰ 상황을 μ‹€μ‹œκ°„μœΌλ‘œ λ³΄κ³ ν•©λ‹ˆλ‹€.","s7ToolListTasks":"μ‹€ν–‰ μ€‘μ΄κ±°λ‚˜ μ™„λ£Œλœ νƒœμŠ€ν¬ λͺ©λ‘μ„ μ‘°νšŒν•©λ‹ˆλ‹€.","s7ToolListAttachments":"λ…Έλ“œμ— μ²¨λΆ€λœ 파일 λͺ©λ‘μ„ μ‘°νšŒν•©λ‹ˆλ‹€.","s7ToolGetAttachment":"첨뢀 파일의 λ‚΄μš©μ„ λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€.","s7ToolUploadAttachment":"λ…Έλ“œμ— νŒŒμΌμ„ μ²¨λΆ€ν•©λ‹ˆλ‹€.","s7FlowTitle":"κΈ°λ³Έ μ‹€ν–‰ 흐름","s7Flow1":"1. start_workflow β†’ νƒœμŠ€ν¬ 생성","s7Flow2":"2. advance β†’ ν˜„μž¬ 단계 μ§€μΉ¨ μˆ˜μ‹ ","s7Flow3":"3. execute_step β†’ κ²°κ³Ό 제좜","s7Flow4":"4. 2~3 반볡. HITL 단계면 request_approval ν›„ μ‚¬λžŒμ˜ 승인 λŒ€κΈ°","s7Flow5":"5. complete_task β†’ νƒœμŠ€ν¬ μ™„λ£Œ","s7AutoTitle":"μžλ™ 생성과 μžκΈ°κ°œμ„ ","s7AutoDesc":"MCPλ₯Ό μ΄μš©ν•˜λ©΄ μ§€μΉ¨κ³Ό μ›Œν¬ν”Œλ‘œ 자체λ₯Ό μžλ™μœΌλ‘œ λ§Œλ“€κ±°λ‚˜, μ‹€ν–‰ κ²°κ³Όλ₯Ό 뢄석해 μ μ§„μ μœΌλ‘œ κ°œμ„ ν•˜λŠ” 루프도 섀계할 수 μžˆμŠ΅λ‹ˆλ‹€.","s7Auto1":"λΉ„μŠ·ν•œ μœ ν˜•μ˜ μ›Œν¬ν”Œλ‘œλ₯Ό μžλ™μœΌλ‘œ νŒŒμƒν•©λ‹ˆλ‹€.","s7Auto2":"νƒœμŠ€ν¬ 둜그λ₯Ό 뢄석해 자주 λ§‰νžˆλŠ” 단계λ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€.","s7Auto3":"μ§€μΉ¨ 문ꡬλ₯Ό κ°œμ„ ν•œ μƒˆ 버전을 λ§Œλ“€κ³  λΉ„κ΅ν•©λ‹ˆλ‹€.","s8Tip1Title":"μ²˜μŒμ—λŠ” 짧게 μ‹œμž‘ν•©λ‹ˆλ‹€","s8Tip1Desc":"3~4단계 μ•ˆμ—μ„œ λλ‚˜λŠ” 짧은 μ›Œν¬ν”Œλ‘œλ₯Ό λ¨Όμ € μ„±κ³΅μ‹œν‚¨ λ’€ 점점 승인 λ‹¨κ³„λ‚˜ 반볡 단계λ₯Ό μΆ”κ°€ν•˜λŠ” 편이 μ•ˆμ •μ μž…λ‹ˆλ‹€.","s8Tip2Title":"κ²°κ³Ό ν˜•μ‹μ„ ν†΅μΌν•©λ‹ˆλ‹€","s8Tip2Desc":"같은 μœ ν˜•μ˜ 지침은 항상 같은 ν˜•μ‹μœΌλ‘œ κ²°κ³Όλ₯Ό μ“°κ²Œ ν•˜λ©΄, λ‚˜μ€‘μ— νƒœμŠ€ν¬ 둜그λ₯Ό 읽고 λΉ„κ΅ν•˜κΈ°κ°€ 훨씬 μ‰¬μ›Œμ§‘λ‹ˆλ‹€.","s8Tip3Title":"GateλŠ” κΌ­ ν•„μš”ν•œ κ³³μ—λ§Œ λ‘‘λ‹ˆλ‹€","s8Tip3Desc":"μ‚¬μš©μžμ˜ 응닡이 정말 μ˜μ‚¬κ²°μ •μ— ν•„μš”ν•œ 단계가 μ•„λ‹ˆλΌλ©΄ Action으둜 λλ‚΄λŠ” 편이 μ‹€ν–‰ 속도와 μ‚¬μš©μ„±μ΄ μ’‹μŠ΅λ‹ˆλ‹€.","s8Tip4Title":"이름을 ꡬ체적으둜 μ§“μŠ΅λ‹ˆλ‹€","s8Tip4Desc":"μ›Œν¬ν”Œλ‘œ 제λͺ©, μ§€μΉ¨ 제λͺ©, νƒœμŠ€ν¬ μ»¨ν…μŠ€νŠΈκ°€ ꡬ체적일수둝 λͺ©λ‘κ³Ό 상세 breadcrumbμ—μ„œ λ°”λ‘œ λ§₯락을 읽을 수 μžˆμŠ΅λ‹ˆλ‹€.","s8CtaTitle":"λ°”λ‘œ μ‹œμž‘ν•˜λ €λ©΄","s8CtaDesc":"λ¨Όμ € μ§€μΉ¨μ—μ„œ μž‘μ—… λ‹¨μœ„λ₯Ό λ§Œλ“€κ³ , κ·Έλ‹€μŒ μ›Œν¬ν”Œλ‘œμ—μ„œ μˆœμ„œλ₯Ό 쑰립해 λ³΄μ„Έμš”. μ‹€ν–‰ κ²°κ³ΌλŠ” νƒœμŠ€ν¬μ—μ„œ λ°”λ‘œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.","s8CtaGoal":"μΆ”μ²œ 첫 λͺ©ν‘œ:","s8CtaGoal1":"UI 점검 μ›Œν¬ν”Œλ‘œ","s8CtaGoal2":"λ¬Έμ„œ κ²€ν†  μ›Œν¬ν”Œλ‘œ","navVS":"Visual Selection","navSkills":"μŠ€ν‚¬ λͺ…λ Ήμ–΄","sVsIntro":"Gate λ…Έλ“œμ— visual_selection을 켜면 μ—μ΄μ „νŠΈκ°€ HTML 선택 UIλ₯Ό 직접 λ Œλ”λ§ν•˜κ³ , μ‚¬μš©μžκ°€ λ²„νŠΌμ„ 클릭해 μ‘λ‹΅ν•©λ‹ˆλ‹€. ν…μŠ€νŠΈ μž…λ ₯ 없이 클릭 ν•œ 번으둜 μ›Œν¬ν”Œλ‘œκ°€ μ΄μ–΄μ§‘λ‹ˆλ‹€.","sVsHowTitle":"μž‘λ™ 방식","sVsHow1":"μ—μ΄μ „νŠΈκ°€ Gate 단계에 λ„λ‹¬ν•˜λ©΄ bk-* μ»΄ν¬λ„ŒνŠΈ HTML을 μž‘μ„±ν•©λ‹ˆλ‹€.","sVsHow2":"νƒœμŠ€ν¬ 상세 νŽ˜μ΄μ§€μ— νŒμ—…μ΄ μžλ™μœΌλ‘œ μ—΄λ¦½λ‹ˆλ‹€.","sVsHow3":"μ‚¬μš©μžκ°€ μ›ν•˜λŠ” ν•­λͺ©μ„ ν΄λ¦­ν•˜κ³  확인을 λˆ„λ¦…λ‹ˆλ‹€.","sVsHow4":"선택 κ²°κ³Όκ°€ μ—μ΄μ „νŠΈμ— μ „λ‹¬λ˜κ³  λ‹€μŒ λ‹¨κ³„λ‘œ μ΄μ–΄μ§‘λ‹ˆλ‹€.","sVsCompTitle":"μ£Όμš” μ»΄ν¬λ„ŒνŠΈ","sVsDemoOptionsLabel":"bk-options β€” 단일 선택 μΉ΄λ“œ (A/B/C)","sVsDemoChecklistLabel":"bk-checklist β€” 닀쀑 선택","sVsDemoSliderLabel":"bk-slider β€” 수치 μž…λ ₯","sVsMoreTitle":"κ·Έ μ™Έ μ»΄ν¬λ„ŒνŠΈ","sVsMore1":"bk-cards β€” 이미지 μΉ΄λ“œ 선택 (λ ˆμ΄μ•„μ›ƒ\xb7차트 μœ ν˜• κ³ λ₯Ό λ•Œ)","sVsMore2":"bk-ranking β€” λ“œλž˜κ·Έ μˆœμœ„ μ •λ ¬","sVsMore3":"bk-matrix β€” 2\xd72 μ€‘μš”λ„\xb7긴급도 배치","sVsMore4":"bk-code-compare β€” μ½”λ“œ 두 버전 비ꡐ","sVsMore5":"bk-split, bk-pros-cons, bk-mockup, bk-timeline β€” 비ꡐ\xb7κ²€ν† μš© λ ˆμ΄μ•„μ›ƒ","sVsTip":"μ—μ΄μ „νŠΈκ°€ bk-design λ˜λŠ” bk-start μ‹€ν–‰ 쀑 Gate λ…Έλ“œμ—μ„œ VS UIλ₯Ό μžλ™ μƒμ„±ν•©λ‹ˆλ‹€. 별도 μ„€μ • 없이 μ›Œν¬ν”Œλ‘œ λ…Έλ“œμ—μ„œ visual_selection: true둜 μ§€μ •ν•˜λ©΄ λ©λ‹ˆλ‹€.","sSkIntro":"BlueKiwiλŠ” μ›Ή UI 외에 AI μ½”λ”© λ„κ΅¬μ—μ„œ μŠ¬λž˜μ‹œ λͺ…λ Ήμ–΄(/skill)둜 직접 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μŠ€ν‚¬μ€ κ°€μž₯ λΉ λ₯΄κ³  μžμ—°μŠ€λŸ¬μš΄ μ›Œν¬ν”Œλ‘œ μ‹€ν–‰ κ²½λ‘œμž…λ‹ˆλ‹€.","sSkTableTitle":"μŠ€ν‚¬ λͺ©λ‘","sSkBkStart":"μ›Œν¬ν”Œλ‘œλ₯Ό μ„ νƒν•˜κ³  νƒœμŠ€ν¬λ₯Ό 생성\xb7μ‹€ν–‰ν•©λ‹ˆλ‹€. μ€‘λ‹¨λœ νƒœμŠ€ν¬ 재개 및 μ’…λ£Œλ„ μ²˜λ¦¬ν•©λ‹ˆλ‹€.","sSkBkDesign":"μžμ—°μ–΄ λͺ©ν‘œλ₯Ό μž…λ ₯ν•˜λ©΄ μ›Œν¬ν”Œλ‘œ ꡬ쑰λ₯Ό μ„€κ³„ν•˜κ³  μ„œλ²„μ— λ“±λ‘ν•©λ‹ˆλ‹€.","sSkBkApprove":"HITL λŒ€κΈ° 쀑인 단계λ₯Ό CLIμ—μ„œ μŠΉμΈν•˜κ±°λ‚˜ 게이트 응닡을 μž…λ ₯ν•©λ‹ˆλ‹€.","sSkBkImprove":"κΈ°μ‘΄ μ›Œν¬ν”Œλ‘œλ₯Ό 뢄석해 κ°œμ„  버전을 λ§Œλ“€κ³  비ꡐ μ‹€ν–‰ν•©λ‹ˆλ‹€.","sSkBkNext":"μ‹€ν–‰ 쀑인 νƒœμŠ€ν¬λ₯Ό μ°Ύμ•„ ν˜„μž¬ 단계뢀터 μž¬κ°œν•©λ‹ˆλ‹€.","sSkBkReport":"κ°œλ°œμžμ—κ²Œ 버그\xb7κ°œμ„  ν”Όλ“œλ°±μ„ μ „μ†‘ν•©λ‹ˆλ‹€.","sSkBkInstruction":"μ§€μΉ¨ ν…œν”Œλ¦Ώμ„ 생성\xb7νŽΈμ§‘\xb7μ‚­μ œν•˜κ³  ν¬λ¦¬λ΄μ…œμ„ μ—°κ²°ν•©λ‹ˆλ‹€.","sSkBkHelp":"μ‚¬μš© κ°€λŠ₯ν•œ bk-* λͺ…λ Ήμ–΄ λͺ©λ‘κ³Ό μ„€λͺ…을 ν‘œμ‹œν•©λ‹ˆλ‹€.","sSkSessionTitle":"μ„Έμ…˜ 볡ꡬ 흐름","sSkSession1":"/bk-start μ‹€ν–‰ μ‹œ λΉ„ν™œμ„± 2μ‹œκ°„ 초과 νƒœμŠ€ν¬λ₯Ό μžλ™μœΌλ‘œ timed_out μ²˜λ¦¬ν•©λ‹ˆλ‹€.","sSkSession2":"running\xb7timed_out νƒœμŠ€ν¬κ°€ 있으면 μ΄μ–΄μ„œ μ§„ν–‰ / μ’…λ£Œν•˜κ³  μƒˆλ‘œ μ‹œμž‘ / μƒˆ νƒœμŠ€ν¬ μ‹œμž‘(κΈ°μ‘΄ μœ μ§€) 쀑 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.","sSkSession3":"μ—¬λŸ¬ 건이 있으면 κ°€μž₯ 졜근 νƒœμŠ€ν¬λ₯Ό κΈ°μ€€μœΌλ‘œ 선택지가 μ œμ‹œλ©λ‹ˆλ‹€.","sSkInterruptTitle":"쀑단 처리","sSkInterrupt1":"μ‹€ν–‰ 쀑 \'쀑단\', \'stop\', \'그만\' 등을 μž…λ ₯ν•˜λ©΄ 쀑단 λ‹€μ΄μ–Όλ‘œκ·Έκ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.","sSkInterrupt2":"μΌμ‹œ 쀑지 β€” νƒœμŠ€ν¬λ₯Ό running μƒνƒœλ‘œ 두고 λ‚˜μ€‘μ— μ΄μ–΄μ„œ μ§„ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.","sSkInterrupt3":"νƒœμŠ€ν¬ μ’…λ£Œ β€” complete_taskλ₯Ό ν˜ΈμΆœν•΄ νžˆμŠ€ν† λ¦¬μ— \'μ’…λ£Œλ¨\'으둜 κΈ°λ‘ν•©λ‹ˆλ‹€.","s4TimedOut":"μ‹œκ°„ 초과","s4TimedOutDesc":"2μ‹œκ°„ 이상 ν™œλ™μ΄ μ—†μœΌλ©΄ μžλ™μœΌλ‘œ μ „ν™˜λ©λ‹ˆλ‹€. /bk-start둜 μž¬κ°œν•˜κ±°λ‚˜ μ’…λ£Œν•  수 μžˆμŠ΅λ‹ˆλ‹€.","s4FeedbackTitle":"ν”Όλ“œλ°± μ„œλ² μ΄","s4FeedbackDesc":"λͺ¨λ“  단계가 μ™„λ£Œλ˜λ©΄ μ—μ΄μ „νŠΈκ°€ ν”Όλ“œλ°± 섀문을 μ§„ν–‰ν•œ λ’€ νƒœμŠ€ν¬λ₯Ό μ™„λ£Œ μ²˜λ¦¬ν•©λ‹ˆλ‹€. κ°„λ‹¨ν•œ 평점과 의견으둜 μ›Œν¬ν”Œλ‘œ κ°œμ„ μ— ν™œμš©λ©λ‹ˆλ‹€.","s5RewindTitle":"되감기(Rewind)","s5RewindDesc":"νƒœμŠ€ν¬ 상세 μ™Όμͺ½ ν•˜λ‹¨μ˜ 되감기 λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ ν˜„μž¬ 단계λ₯Ό μ·¨μ†Œν•˜κ³  이전 단계뢀터 λ‹€μ‹œ μ‹€ν–‰ν•©λ‹ˆλ‹€. κ²°κ³Όκ°€ λ§ˆμŒμ— λ“€μ§€ μ•Šμ„ λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.","s5CommentTitle":"μ½”λ©˜νŠΈ","s5CommentDesc":"각 단계 κ²°κ³Ό μ•„λž˜μ— μ½”λ©˜νŠΈλ₯Ό 남길 수 μžˆμŠ΅λ‹ˆλ‹€. μ—μ΄μ „νŠΈμ™€ μ‚¬λžŒ λͺ¨λ‘ μ½”λ©˜νŠΈλ₯Ό μž‘μ„±ν•  수 μžˆμ–΄, 단계별 ν”Όλ“œλ°±κ³Ό λ§₯락을 κΈ°λ‘ν•˜λŠ” 데 μœ μš©ν•©λ‹ˆλ‹€.","s5TimedOutTitle":"timed_out μƒνƒœ","s5TimedOutDesc":"2μ‹œκ°„ 이상 ν™œλ™μ΄ μ—†λŠ” running νƒœμŠ€ν¬λŠ” μžλ™μœΌλ‘œ timed_out으둜 μ „ν™˜λ©λ‹ˆλ‹€. λͺ©λ‘μ—μ„œ 황색 λ°°μ§€λ‘œ ν‘œμ‹œλ˜λ©°, /bk-start둜 μž¬κ°œν•˜κ±°λ‚˜ μ™„μ „νžˆ μ’…λ£Œν•  수 μžˆμŠ΅λ‹ˆλ‹€.","s7ToolSetVisualHtml":"VS Gate에 λ Œλ”λ§ν•  HTML UIλ₯Ό λ“±λ‘ν•©λ‹ˆλ‹€.","s7ToolGetWebResponse":"μ‚¬μš©μžμ˜ VS 클릭 κ²°κ³Όλ₯Ό ν΄λ§ν•©λ‹ˆλ‹€.","s7ToolSaveFeedback":"νƒœμŠ€ν¬ μ™„λ£Œ μ „ ν”Όλ“œλ°±μ„ μ„œλ²„μ— μ €μž₯ν•©λ‹ˆλ‹€.","s7ToolSubmitReport":"개발자 ν”Όλ“œλ°± 리포트λ₯Ό μ„œλ²„λ‘œ μ „μ†‘ν•©λ‹ˆλ‹€.","s7ToolListWorkflows":"λ“±λ‘λœ μ›Œν¬ν”Œλ‘œ λͺ©λ‘μ„ μ‘°νšŒν•©λ‹ˆλ‹€.","s7ToolListMyGroups":"λ‚΄ κ·Έλ£Ή λͺ©λ‘μ„ μ‘°νšŒν•©λ‹ˆλ‹€.","s7FeedbackTitle":"μ™„λ£Œ ν”Œλ‘œμš°","s7FeedbackDesc":"μ›Œν¬ν”Œλ‘œ λ§ˆμ§€λ§‰ 단계가 λλ‚˜λ©΄ μ—μ΄μ „νŠΈλŠ” save_feedback β†’ complete_task μˆœμ„œλ‘œ μ‹€ν–‰ν•©λ‹ˆλ‹€. ν”Όλ“œλ°± 없이 λ°”λ‘œ complete_taskλ₯Ό λΆ€λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€."},"nav":{"workflows":"μ›Œν¬ν”Œλ‘œ","tasks":"νƒœμŠ€ν¬","credentials":"ν¬λ¦¬λ΄μ…œ","instructions":"μ§€μΉ¨","tutorial":"νŠœν† λ¦¬μ–Ό","apiDocs":"API λ¬Έμ„œ","marketplace":"λ§ˆμΌ“ν”Œλ ˆμ΄μŠ€","settings":"μ„€μ •","main":"메인","resources":"λ¦¬μ†ŒμŠ€","home":"ν™ˆ","new":"μƒˆλ‘œ λ§Œλ“€κΈ°","github":"GitHub μ €μž₯μ†Œ","license":"λΌμ΄μ„ΌμŠ€","support":"개발자 후원","version":"버전","updateAvailable":"μ—…λ°μ΄νŠΈ ν•„μš”","versionDialogTitle":"BlueKiwi 버전","versionDialogDescUpdate":"μƒˆ 버전이 μžˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ 버전은 v{current}이고, μ΅œμ‹  λ¦΄λ¦¬μŠ€λŠ” v{latest}μž…λ‹ˆλ‹€.","versionDialogDescCurrent":"ν˜„μž¬ μ•Œλ €μ§„ μ΅œμ‹  버전 v{current}을 μ‚¬μš© μ€‘μž…λ‹ˆλ‹€.","updateMethodCliTitle":"CLI둜 μ„€μΉ˜ν•œ 경우","updateMethodNpmTitle":"μ „μ—­ μž¬μ„€μΉ˜λ₯Ό 원할 경우","updateMethodDockerTitle":"Docker Compose둜 운영 쀑인 경우","viewReleaseNotes":"릴리슀 λ…ΈνŠΈ 보기"},"auth":{"login":"둜그인","logout":"λ‘œκ·Έμ•„μ›ƒ","email":"이메일","password":"λΉ„λ°€λ²ˆν˜Έ","emailPlaceholder":"you@example.com","passwordPlaceholder":"β€’β€’β€’β€’β€’β€’β€’β€’","logoAlt":"BlueKiwi 둜고","brandTagline":"μ—μ΄μ „νŠΈ μ›Œν¬ν”Œλ‘œ μ—”μ§„","loginButton":"둜그인","loggingIn":"둜그인 쀑...","noAccount":"계정이 μ—†μœΌμ‹ κ°€μš”?","contactAdmin":"κ΄€λ¦¬μžμ—κ²Œ 문의","invalidCredentials":"이메일 λ˜λŠ” λΉ„λ°€λ²ˆν˜Έκ°€ μ˜¬λ°”λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.","enterBoth":"이메일과 λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.","connectionError":"μ„œλ²„μ— μ—°κ²°ν•  수 μ—†μŠ΅λ‹ˆλ‹€.","loginFailed":"λ‘œκ·ΈμΈμ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€."},"setup":{"title":"첫 번째 κ΄€λ¦¬μž 계정을 μƒμ„±ν•©λ‹ˆλ‹€","name":"이름","namePlaceholder":"κ΄€λ¦¬μž 이름","emailPlaceholder":"admin@example.com","passwordPlaceholder":"6자 이상","confirmPassword":"λΉ„λ°€λ²ˆν˜Έ 확인","confirmPlaceholder":"λΉ„λ°€λ²ˆν˜Έ λ‹€μ‹œ μž…λ ₯","createButton":"κ΄€λ¦¬μž 계정 생성","creating":"생성 쀑...","superuserNote":"이 계정은 superuser κΆŒν•œμœΌλ‘œ μƒμ„±λ©λ‹ˆλ‹€","passwordMinLength":"λΉ„λ°€λ²ˆν˜ΈλŠ” 6자 이상이어야 ν•©λ‹ˆλ‹€.","passwordMismatch":"λΉ„λ°€λ²ˆν˜Έκ°€ μΌμΉ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.","setupFailed":"섀정에 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","serverError":"μ„œλ²„ 였λ₯˜ ({status}). 둜그 확인: ~/.bluekiwi/quickstart/<profile>/logs/app.log"},"changePassword":{"title":"λΉ„λ°€λ²ˆν˜Έλ₯Ό λ³€κ²½ν•΄μ£Όμ„Έμš”","currentPassword":"ν˜„μž¬ λΉ„λ°€λ²ˆν˜Έ","currentPasswordPlaceholder":"ν˜„μž¬ λΉ„λ°€λ²ˆν˜Έ","newPassword":"μƒˆ λΉ„λ°€λ²ˆν˜Έ","newPasswordPlaceholder":"μ΅œμ†Œ 6자 이상","confirmNewPassword":"μƒˆ λΉ„λ°€λ²ˆν˜Έ 확인","confirmNewPasswordPlaceholder":"μƒˆ λΉ„λ°€λ²ˆν˜Έ λ‹€μ‹œ μž…λ ₯","changeButton":"λΉ„λ°€λ²ˆν˜Έ λ³€κ²½","changing":"λ³€κ²½ 쀑...","minLength":"μƒˆ λΉ„λ°€λ²ˆν˜ΈλŠ” μ΅œμ†Œ 6자 이상이어야 ν•©λ‹ˆλ‹€.","mismatch":"μƒˆ λΉ„λ°€λ²ˆν˜Έκ°€ μΌμΉ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.","changeFailed":"λΉ„λ°€λ²ˆν˜Έ 변경에 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","changed":"λΉ„λ°€λ²ˆν˜Έκ°€ λ³€κ²½λ˜μ—ˆμŠ΅λ‹ˆλ‹€."},"invite":{"title":"BlueKiwi에 μ΄ˆλŒ€λ˜μ—ˆμŠ΅λ‹ˆλ‹€","body":"{email}λ‹˜, {role} κΆŒν•œμœΌλ‘œ μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ— μ°Έμ—¬ν•˜μ„Έμš”.","username":"μ‚¬μš©μžλͺ…","password":"λΉ„λ°€λ²ˆν˜Έ","accept":"μˆ˜λ½ν•˜κ³  계정 λ§Œλ“€κΈ°","success":{"title":"계정 생성 μ™„λ£Œ","installHint":"CLIμ—μ„œ μ•„λž˜ λͺ…λ Ήμ–΄λ‘œ BlueKiwiλ₯Ό μ—°κ²°ν•˜μ„Έμš”","goLogin":"둜그인 νŽ˜μ΄μ§€λ‘œ"},"error":{"not_found":"μ΄ˆλŒ€ 링크λ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€","expired":"μ΄ˆλŒ€ 링크가 λ§Œλ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€","already_accepted":"이미 μ‚¬μš©λœ μ΄ˆλŒ€ λ§ν¬μž…λ‹ˆλ‹€","network_error":"μ„œλ²„μ™€ 톡신할 수 μ—†μŠ΅λ‹ˆλ‹€"}},"dashboard":{"title":"λŒ€μ‹œλ³΄λ“œ","subtitle":"μ›Œν¬ν”Œλ‘œμ™€ νƒœμŠ€ν¬ ν˜„ν™©μ„ ν•œλˆˆμ— ν™•μΈν•©λ‹ˆλ‹€.","workflows":"μ›Œν¬ν”Œλ‘œ","activeTasks":"μ§„ν–‰ 쀑","completedTasks":"μ™„λ£Œ","teamMembers":"νŒ€ 멀버","registeredWorkflows":"λ“±λ‘λœ μ›Œν¬ν”Œλ‘œ","active":"ν™œμ„± νƒœμŠ€ν¬","completed":"μ™„λ£Œλœ νƒœμŠ€ν¬","registeredUsers":"λ“±λ‘λœ μ‚¬μš©μž","recentActivity":"졜근 ν™œλ™","noActivity":"아직 ν™œλ™ 기둝이 μ—†μŠ΅λ‹ˆλ‹€.","activeTasksList":"μ§„ν–‰ 쀑인 νƒœμŠ€ν¬","viewAll":"전체 보기","noActiveTasks":"μ§„ν–‰ 쀑인 νƒœμŠ€ν¬κ°€ μ—†μŠ΅λ‹ˆλ‹€.","quickLinks":"λ°”λ‘œκ°€κΈ°","workflowManagement":"μ›Œν¬ν”Œλ‘œ 관리","workflowManagementDesc":"μ›Œν¬ν”Œλ‘œ 생성 및 νŽΈμ§‘","taskTitle":"νƒœμŠ€ν¬","taskDesc":"μ‹€ν–‰ μƒνƒœ μ‹€μ‹œκ°„ 확인","tutorialTitle":"νŠœν† λ¦¬μ–Ό","tutorialDesc":"BlueKiwi μ‚¬μš© κ°€μ΄λ“œ","apiDocsTitle":"API λ¬Έμ„œ","apiDocsDesc":"REST API 레퍼런슀","timeJustNow":"방금 μ „","timeMinutesAgo":"{n}λΆ„ μ „","timeHoursAgo":"{n}μ‹œκ°„ μ „","timeDaysAgo":"{n}일 μ „"},"workflows":{"title":"μ›Œν¬ν”Œλ‘œ","newWorkflow":"μƒˆ μ›Œν¬ν”Œλ‘œ","detailTitle":"μ›Œν¬ν”Œλ‘œ 상세","edit":"μˆ˜μ •","export":"내보내기","import":"κ°€μ Έμ˜€κΈ°","exportTitle":"μ›Œν¬ν”Œλ‘œ 내보내기","importTitle":"μ›Œν¬ν”Œλ‘œ κ°€μ Έμ˜€κΈ°","exportDescription":"이 μ›Œν¬ν”Œλ‘œλ₯Ό JSON 파일둜 μ €μž₯ν•©λ‹ˆλ‹€.","importDescription":"JSON 파일둜 μ €μž₯된 μ›Œν¬ν”Œλ‘œλ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€.","history":"μ‹€ν–‰ 이λ ₯","nodesTab":"λ…Έλ“œ","meta":"메타데이터","version":"버전","nodeCount":"λ…Έλ“œ 수","nodeStep":"μŠ€ν… {step}","updatedAt":"μˆ˜μ •λ¨","run":"μ‹€ν–‰","runFailed":"μ›Œν¬ν”Œλ‘œ 싀행을 μ‹œμž‘ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.","runStarted":"νƒœμŠ€ν¬ #{id} 싀행을 μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.","invalidId":"μœ νš¨ν•˜μ§€ μ•Šμ€ μ›Œν¬ν”Œλ‘œ IDμž…λ‹ˆλ‹€.","notFound":"μ›Œν¬ν”Œλ‘œλ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.","backToList":"λͺ©λ‘μœΌλ‘œ λŒμ•„κ°€κΈ°","noDescription":"μ„€λͺ…이 μ—†μŠ΅λ‹ˆλ‹€.","noInstruction":"μ—°κ²°λœ 지침이 μ—†μŠ΅λ‹ˆλ‹€.","runningTasks":"이 μ›Œν¬ν”Œλ‘œμ˜ νƒœμŠ€ν¬ {count}개","quickTasksTitle":"μ—°κ²°λœ νƒœμŠ€ν¬","quickTasksDesc":"졜근 μ‹€ν–‰κ³Ό ν˜„μž¬ μ§„ν–‰ μƒνƒœλ₯Ό λ°”λ‘œ ν™•μΈν•©λ‹ˆλ‹€.","recentTasks":"졜근 μ‹€ν–‰","totalTasksLabel":"전체","viewAllTasks":"전체 νƒœμŠ€ν¬ 보기","openHistory":"μ‹€ν–‰ 이λ ₯ μ—΄κΈ°","noTasks":"이 μ›Œν¬ν”Œλ‘œλ‘œ μ‹€ν–‰λœ νƒœμŠ€ν¬κ°€ μ—†μŠ΅λ‹ˆλ‹€.","noNodes":"λ“±λ‘λœ λ…Έλ“œκ°€ μ—†μŠ΅λ‹ˆλ‹€.","noNodesDesc":"λ…Έλ“œλ₯Ό μΆ”κ°€ν•˜λ©΄ μ—¬κΈ°μ—μ„œ 전체 ꡬ성을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.","metaId":"μ›Œν¬ν”Œλ‘œ ID","metaVersion":"버전","metaParent":"원본 μ›Œν¬ν”Œλ‘œ","metaNoParent":"μ—†μŒ","metaContract":"평가 계약","noEvaluation":"μ„€μ •λœ 평가 계약이 μ—†μŠ΅λ‹ˆλ‹€.","empty":"μ›Œν¬ν”Œλ‘œκ°€ μ—†μŠ΅λ‹ˆλ‹€","emptyDesc":"첫 번째 μ›Œν¬ν”Œλ‘œλ₯Ό λ§Œλ“€μ–΄λ³΄μ„Έμš”","deleteConfirm":"μ›Œν¬ν”Œλ‘œ μ‚­μ œ","deleteDesc":"을(λ₯Ό) μ‚­μ œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? 이 μž‘μ—…μ€ 되돌릴 수 μ—†μŠ΅λ‹ˆλ‹€.","deleted":"μ›Œν¬ν”Œλ‘œκ°€ μ‚­μ œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.","duplicated":"μ›Œν¬ν”Œλ‘œκ°€ λ³΅μ œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.","nodes":"개 λ…Έλ“œ","saved":"μ›Œν¬ν”Œλ‘œκ°€ μ €μž₯λ˜μ—ˆμŠ΅λ‹ˆλ‹€.","copy":"볡사","versionsTab":"버전","publishNewVersion":"μƒˆ 버전 λ°œν–‰","publishedVersion":"λ°œν–‰ μ™„λ£Œ: {version}","publishFailed":"μƒˆ 버전 λ°œν–‰μ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","activeBadge":"ν™œμ„±","inactiveBadge":"보관됨","draftBadge":"λ“œλž˜ν”„νŠΈ","activate":"ν™œμ„±ν™”","deactivate":"λΉ„ν™œμ„±ν™”","activated":"버전이 ν™œμ„±ν™”λ˜μ—ˆμŠ΅λ‹ˆλ‹€.","deactivated":"버전이 λΉ„ν™œμ„±ν™”λ˜μ—ˆμŠ΅λ‹ˆλ‹€.","activateFailed":"ν™œμ„±ν™”μ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","deactivateFailed":"λΉ„ν™œμ„±ν™”μ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","versionHistoryTitle":"버전 νžˆμŠ€ν† λ¦¬","versionHistoryDesc":"같은 family의 λͺ¨λ“  버전을 ν™•μΈν•˜κ³  ν˜„μž¬ 운영 쀑인 버전을 μ„ νƒν•˜μ„Έμš”.","lineage":"λ¦¬λ‹ˆμ§€","lineageDesc":"μƒμœ„ λ²„μ „μ—μ„œ νŒŒμƒλœ 관계λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.","noParent":"μ΅œμƒμœ„","createdAt":"생성","actions":"λ™μž‘","currentlyViewing":"ν˜„μž¬ 보기","showArchived":"보관 버전 포함","hideArchived":"보관 버전 숨기기","inactiveEditWarning":"ν˜„μž¬ ν™œμ„± 버전이 μ•„λ‹™λ‹ˆλ‹€. νŽΈμ§‘ λ‚΄μš©μ€ in-place μ €μž₯되며 μš΄μ˜μ— λ°˜μ˜λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.","inactiveStartBlocked":"이 버전은 λΉ„ν™œμ„± μƒνƒœλΌ νƒœμŠ€ν¬λ₯Ό μ‹œμž‘ν•  수 μ—†μŠ΅λ‹ˆλ‹€. λ¨Όμ € ν™œμ„±ν™”ν•˜μ„Έμš”.","pickVersion":"μ‹€ν–‰ν•  버전 선택","pickVersionDefault":"ν™œμ„± 버전 μ‚¬μš©","versionInactive409":"μ„ νƒν•œ 버전이 λΉ„ν™œμ„± μƒνƒœμž…λ‹ˆλ‹€.","folders":"폴더","allWorkflows":"전체 μ›Œν¬ν”Œλ‘œ","results":"개의 κ²°κ³Ό","movedToFolder":"μ›Œν¬ν”Œλ‘œλ₯Ό ν΄λ”λ‘œ μ΄λ™ν–ˆμŠ΅λ‹ˆλ‹€."},"runDialog":{"step1Label":"νƒœμŠ€ν¬ μ„€μ •","step2Label":"λͺ…λ Ήμ–΄ 확인","step1Desc":"이번 싀행에 λŒ€ν•œ 정보λ₯Ό μž…λ ₯ν•˜μ„Έμš”. λͺ¨λ‘ μ„ νƒμ‚¬ν•­μž…λ‹ˆλ‹€.","titleLabel":"제λͺ© (선택)","titlePlaceholder":"예: Q1 뢄석, λ³΄μ•ˆ 점검...","contextLabel":"μš”μ²­ λ‚΄μš© (선택)","contextPlaceholder":"μ—μ΄μ „νŠΈμ—κ²Œ 전달할 μš”μ²­μ΄λ‚˜ μ§€μ‹œμ‚¬ν•­μ„ μž…λ ₯ν•˜μ„Έμš”.","nextBtn":"λ‹€μŒ","backBtn":"이전","toolLabel":"AI 도ꡬ 선택","commandLabel":"μ„Έμ…˜μ— λΆ™μ—¬λ„£κΈ°","copyBtn":"볡사","usageHint":"AI μ½”λ”© μ—μ΄μ „νŠΈ μ„Έμ…˜μ— μœ„ λͺ…λ Ήμ–΄λ₯Ό λΆ™μ—¬λ„£μœΌλ©΄ μ›Œν¬ν”Œλ‘œκ°€ μ‹œμž‘λ©λ‹ˆλ‹€."},"tasks":{"title":"νƒœμŠ€ν¬","empty":"νƒœμŠ€ν¬κ°€ μ—†μŠ΅λ‹ˆλ‹€","emptyDesc":"μ›Œν¬ν”Œλ‘œλ₯Ό μ‹€ν–‰ν•˜λ©΄ νƒœμŠ€ν¬κ°€ 여기에 ν‘œμ‹œλ©λ‹ˆλ‹€","all":"전체","inProgress":"μ§„ν–‰ 쀑","completed":"μ™„λ£Œ","pending":"λŒ€κΈ°","running":"μ‹€ν–‰ 쀑","failed":"μ‹€νŒ¨","timedOut":"μ‹œκ°„ 초과","cancelled":"쀑지됨","rewind":"되돌리기","stopTask":"쀑지","closeTask":"μ’…λ£Œ","resumeTask":"재개","cancelTask":"μ·¨μ†Œ","statusCompletedMessage":"λͺ¨λ“  단계가 μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.","userInput":"μ‚¬μš©μž μž…λ ₯","thinking":"사고 κ³Όμ •","assistantOutput":"μ–΄μ‹œμŠ€ν„΄νŠΈ 좜λ ₯","artifacts":"μ•„ν‹°νŒ©νŠΈ","comments":"μ½”λ©˜νŠΈ","addComment":"μ½”λ©˜νŠΈ μΆ”κ°€...","send":"전솑","wsRealtime":"μ‹€μ‹œκ°„ μ—…λ°μ΄νŠΈ","deleteConfirm":"νƒœμŠ€ν¬ #{id}λ₯Ό μ‚­μ œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?","deleteTitle":"νƒœμŠ€ν¬ μ‚­μ œ","deleteDescription":"νƒœμŠ€ν¬ #{id}을(λ₯Ό) μ‚­μ œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? 이 μž‘μ—…μ€ μ·¨μ†Œν•  수 μ—†μŠ΅λ‹ˆλ‹€.","workflowFallback":"μ›Œν¬ν”Œλ‘œ #{id}","taskFallback":"νƒœμŠ€ν¬ #{id}","stepLabel":"μŠ€ν… {step}","stepTitleFallback":"μŠ€ν… {step}","steps":"steps","taskNotFound":"νƒœμŠ€ν¬λ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.","backToList":"λͺ©λ‘μœΌλ‘œ λŒμ•„κ°€κΈ°","selectStep":"상세 λ‚΄μš©μ„ 보렀면 μŠ€ν…μ„ μ„ νƒν•˜μ„Έμš”","hitlPendingApproval":"이 λ‹¨κ³„λŠ” 계속 μ§„ν–‰ν•˜κΈ° 전에 승인이 ν•„μš”ν•©λ‹ˆλ‹€.","hitlApprove":"승인","hitlApproved":"승인 μ™„λ£Œ β€” 싀행이 κ³„μ†λ©λ‹ˆλ‹€.","awaitingResponse":"응닡 λŒ€κΈ° 쀑","responseSubmitted":"응닡이 μ œμΆœλ˜μ—ˆμŠ΅λ‹ˆλ‹€","responseSelections":"μ„ νƒν•œ ν•­λͺ©","responseComment":"μΆ”κ°€ μ½”λ©˜νŠΈ","responseFields":"μž…λ ₯ν•œ ν•„λ“œ","responseOptionComments":"선택지별 μ½”λ©˜νŠΈ","responseValues":"μž…λ ₯ κ°’","responseRanking":"μš°μ„ μˆœμœ„","responseMatrix":"맀트릭슀 배치","typeResponse":"응닡을 μž…λ ₯ν•˜μ„Έμš”...","viewVisual":"λΉ„μ£Όμ–Ό 보기","selectVisual":"λΉ„μ£Όμ–Ό 선택","visualSelectHint":"μ•„λž˜ μ˜΅μ…˜μ„ μ„ νƒν•œ ν›„ 확인 λ²„νŠΌμ„ λˆŒλŸ¬μ£Όμ„Έμš”.","visualViewer":"λΉ„μ£Όμ–Ό λ·°μ–΄","closeVisualViewer":"λ‹«κΈ°","input":"μž…λ ₯","output":"좜λ ₯","showPreviousIterations":"이전 반볡 {n}개 보기","hidePreviousIterations":"이전 반볡 숨기기","iteration":"반볡","latest":"μ΅œμ‹ ","defaultAuthor":"μ‚¬μš©μž"},"settings":{"title":"μ„€μ •","profile":"ν”„λ‘œν•„","apiKeys":"API Keys","teamManagement":"νŒ€ 관리","notifications":"μ•Œλ¦Ό","notificationsTitle":"μ•Œλ¦Ό μ„€μ •","notificationsPlaceholder":"μ•Œλ¦Ό 섀정은 μΆ”ν›„ μ§€μ›λ©λ‹ˆλ‹€.","notificationsBody":"이메일 μ•Œλ¦Ό, μŠ¬λž™ 연동 λ“±μ˜ μ•Œλ¦Ό κΈ°λŠ₯이 μ€€λΉ„ μ€‘μž…λ‹ˆλ‹€.","name":"이름","email":"이메일","role":"μ—­ν• ","changePassword":"λΉ„λ°€λ²ˆν˜Έ λ³€κ²½","saved":"ν”„λ‘œν•„μ΄ μ €μž₯λ˜μ—ˆμŠ΅λ‹ˆλ‹€.","saveFailed":"μ €μž₯에 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","profileInfo":"ν”„λ‘œν•„ 정보","profileDesc":"κ³„μ •μ˜ κΈ°λ³Έ 정보λ₯Ό ν™•μΈν•˜κ³  μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.","namePlaceholder":"이름을 μž…λ ₯ν•˜μ„Έμš”","nameRequired":"이름을 μž…λ ₯ν•΄μ£Όμ„Έμš”.","saving":"μ €μž₯ 쀑...","userLoadFailed":"μ‚¬μš©μž 정보λ₯Ό 뢈러올 수 μ—†μŠ΅λ‹ˆλ‹€."},"apiKeys":{"title":"API Keys","description":"API ν˜ΈμΆœμ— μ‚¬μš©ν•  ν‚€λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.","keyName":"이름","owner":"μ†Œμœ μž","keyPrefix":"ν‚€ 접두사","expiresAt":"만료일","status":"μƒνƒœ","action":"μ•‘μ…˜","revoke":"폐기","revoked":"폐기됨","activeStatus":"ν™œμ„±","none":"μ—†μŒ","noName":"(이름 μ—†μŒ)","newKey":"μƒˆ API Key 생성","newKeyTitle":"μƒˆ API Key 생성","newKeyDesc":"API Key의 이름을 μž…λ ₯ν•˜μ„Έμš”.","namePlaceholder":"예: production-key","generate":"생성","generating":"생성 쀑...","keyCreated":"API Key 생성 μ™„λ£Œ","keyWarning":"이 ν‚€λŠ” λ‹€μ‹œ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ•ˆμ „ν•œ 곳에 λ³΅μ‚¬ν•΄λ‘μ„Έμš”.","cliInitLabel":"CLI μ΄ˆκΈ°ν™” λͺ…λ Ή","copyCliCommand":"CLI λͺ…λ Ή 볡사","keyWarning2":"* 이 ν‚€λŠ” 창을 λ‹«μœΌλ©΄ λ‹€μ‹œ 확인할 수 μ—†μŠ΅λ‹ˆλ‹€.","copied":"ν΄λ¦½λ³΄λ“œμ— λ³΅μ‚¬λ˜μ—ˆμŠ΅λ‹ˆλ‹€.","revokeConfirm":"API Key 폐기","revokeDesc":"ν‚€λ₯Ό νκΈ°ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? 이 μž‘μ—…μ€ 되돌릴 수 μ—†μŠ΅λ‹ˆλ‹€.","revokeSuccess":"API Keyκ°€ νκΈ°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.","revokeFailed":"API Key 폐기에 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","loadFailed":"API Key λͺ©λ‘μ„ λΆˆλŸ¬μ˜€λŠ”λ° μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","noKeys":"λ“±λ‘λœ API Keyκ°€ μ—†μŠ΅λ‹ˆλ‹€.","nameRequired":"ν‚€ 이름을 μž…λ ₯ν•΄μ£Όμ„Έμš”.","createFailed":"생성에 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","keyNameLabel":"ν‚€ 이름"},"team":{"title":"νŒ€ 관리","description":"νŒ€μ›μ„ μ‘°νšŒν•˜κ³  μ΄ˆλŒ€ν•©λ‹ˆλ‹€.","inviteMember":"νŒ€μ› μ΄ˆλŒ€","inviteTitle":"νŒ€μ› μ΄ˆλŒ€","inviteDesc":"μƒˆλ‘œμš΄ νŒ€μ›μ˜ 정보λ₯Ό μž…λ ₯ν•˜μ„Έμš”.","invite":"μ΄ˆλŒ€","inviting":"μ΄ˆλŒ€ 쀑...","memberAdded":"νŒ€μ›μ΄ μ΄ˆλŒ€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.","addFailed":"μ΄ˆλŒ€μ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","name":"이름","namePlaceholder":"이름","email":"이메일","emailPlaceholder":"email@example.com","password":"λΉ„λ°€λ²ˆν˜Έ","passwordPlaceholder":"초기 λΉ„λ°€λ²ˆν˜Έ","role":"μ—­ν• ","roleAdmin":"κ΄€λ¦¬μž","roleEditor":"νŽΈμ§‘μž","roleViewer":"쑰회자","allFieldsRequired":"λͺ¨λ“  ν•„λ“œλ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.","loadFailed":"멀버 λͺ©λ‘μ„ λΆˆλŸ¬μ˜€λŠ”λ° μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","noMembers":"λ“±λ‘λœ 멀버가 μ—†μŠ΅λ‹ˆλ‹€.","invitesLoadFailed":"μ΄ˆλŒ€ λͺ©λ‘μ„ λΆˆλŸ¬μ˜€λŠ”λ° μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","emailRequired":"이메일을 μž…λ ₯ν•΄μ£Όμ„Έμš”.","inviteCreated":"μ΄ˆλŒ€ 링크가 μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.","inviteCreateFailed":"μ΄ˆλŒ€ 생성에 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","inviteCancelled":"μ΄ˆλŒ€κ°€ μ·¨μ†Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.","inviteCancelFailed":"μ΄ˆλŒ€ μ·¨μ†Œμ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","inviteLinkCopied":"μ΄ˆλŒ€ 링크가 λ³΅μ‚¬λ˜μ—ˆμŠ΅λ‹ˆλ‹€.","inviteDescription":"계정을 직접 λ§Œλ“œλŠ” λŒ€μ‹  μ΄ˆλŒ€ 링크λ₯Ό κ³΅μœ ν•©λ‹ˆλ‹€.","shareLinkExpires":"μ•„λž˜ 링크λ₯Ό κ³΅μœ ν•˜μ„Έμš” (만료: {date}):","copyLink":"링크 볡사","creating":"생성 쀑...","createInvite":"μ΄ˆλŒ€ 생성","members":"νŒ€μ›","invites":"μ΄ˆλŒ€ λͺ©λ‘","noInvites":"μ΄ˆλŒ€ 이λ ₯이 μ—†μŠ΅λ‹ˆλ‹€.","invitePending":"{date}κΉŒμ§€ λŒ€κΈ° 쀑","inviteAccepted":"{date}에 수락됨","copyInviteLink":"볡사","permViewWorkflows":"μ›Œν¬ν”Œλ‘œ 쑰회","permExecuteWorkflows":"μ›Œν¬ν”Œλ‘œ μ‹€ν–‰","permCreateEditWorkflows":"μ›Œν¬ν”Œλ‘œ 생성\xb7μˆ˜μ •","permDeleteOwnWorkflows":"μ›Œν¬ν”Œλ‘œ μ‚­μ œ (본인)","permViewCredentials":"자격증λͺ… 쑰회","permCreateEditCredentials":"자격증λͺ… 생성\xb7μˆ˜μ •","permViewMembers":"νŒ€μ› 쑰회","permManageMembers":"νŒ€μ› 관리","permManageFolderShares":"폴더 곡유 관리","deleteUser":"μ‚­μ œ","deleteUserTitle":"νšŒμ› μ‚­μ œ","deleteUserDesc":"이 계정과 κ΄€λ ¨λœ 데이터λ₯Ό μ²˜λ¦¬ν•œ ν›„ 영ꡬ μ‚­μ œν•©λ‹ˆλ‹€. 이 μž‘μ—…μ€ 되돌릴 수 μ—†μŠ΅λ‹ˆλ‹€.","deleteUserMode":"μ†Œμœ  λ¦¬μ†ŒμŠ€ 처리","deleteUserTransfer":"λ‹€λ₯Έ μœ μ €μ—κ²Œ 이전","deleteUserDeleteAll":"λͺ¨λ‘ μ‚­μ œ","deleteUserTransferTo":"이전 λŒ€μƒ","deleteUserSelectTarget":"μœ μ € 선택","deleteUserTransferWarning":"μ›Œν¬ν”Œλ‘œ, 폴더, μ§€μΉ¨, ν¬λ ˆλ΄μ…œμ΄ μ„ νƒν•œ μœ μ €μ—κ²Œ μ΄μ „λ©λ‹ˆλ‹€.","deleteUserDeleteAllWarning":"이 μœ μ €μ˜ μ›Œν¬ν”Œλ‘œ, νƒœμŠ€ν¬, 폴더, μ§€μΉ¨, ν¬λ ˆλ΄μ…œμ΄ λͺ¨λ‘ μ‚­μ œλ©λ‹ˆλ‹€.","deleteUserSuccess":"νšŒμ›μ΄ μ‚­μ œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.","deleteUserFailed":"νšŒμ› μ‚­μ œμ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","deleteUserCannotSuperuser":"Superuser 계정은 μ‚­μ œν•  수 μ—†μŠ΅λ‹ˆλ‹€."},"groups":{"title":"κ·Έλ£Ή 관리","description":"그룹을 λ§Œλ“€κ³  멀버λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.","tabLabel":"κ·Έλ£Ή","newGroup":"μƒˆ κ·Έλ£Ή","groupName":"κ·Έλ£Ή 이름","groupNamePlaceholder":"κ·Έλ£Ή 이름 μž…λ ₯","noGroups":"μƒμ„±λœ 그룹이 μ—†μŠ΅λ‹ˆλ‹€.","selectGroup":"μ’ŒμΈ‘μ—μ„œ 그룹을 μ„ νƒν•˜μ„Έμš”.","members":"멀버","noMembers":"멀버가 μ—†μŠ΅λ‹ˆλ‹€.","addMember":"멀버 μΆ”κ°€","selectUser":"μ‚¬μš©μž 선택","deleteGroup":"κ·Έλ£Ή μ‚­μ œ","deleteConfirm":"이 그룹을 μ‚­μ œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?","created":"그룹이 μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.","createFailed":"κ·Έλ£Ή 생성에 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","memberAdded":"멀버가 μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.","memberAddFailed":"멀버 좔가에 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","memberRemoved":"멀버가 μ œκ±°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.","memberRemoveFailed":"멀버 μ œκ±°μ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","deleted":"그룹이 μ‚­μ œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.","deleteFailed":"κ·Έλ£Ή μ‚­μ œμ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","nameRequired":"κ·Έλ£Ή 이름을 μž…λ ₯ν•΄μ£Όμ„Έμš”."},"deleteAccount":{"title":"계정 μ‚­μ œ","description":"계정을 영ꡬ적으둜 μ‚­μ œν•©λ‹ˆλ‹€. 이 μž‘μ—…μ€ 되돌릴 수 μ—†μŠ΅λ‹ˆλ‹€.","button":"계정 μ‚­μ œ","dialogTitle":"계정을 μ‚­μ œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?","dialogDesc":"계정이 영ꡬ적으둜 μ‚­μ œλ©λ‹ˆλ‹€. 이 μž‘μ—…μ€ 되돌릴 수 μ—†μŠ΅λ‹ˆλ‹€.","mode":"μ†Œμœ  λ¦¬μ†ŒμŠ€ 처리","transfer":"λ‹€λ₯Έ μœ μ €μ—κ²Œ 이전","deleteAll":"λͺ¨λ‘ μ‚­μ œ","transferTo":"이전 λŒ€μƒ","selectTarget":"μœ μ € 선택","transferWarning":"μ›Œν¬ν”Œλ‘œ, 폴더, μ§€μΉ¨, ν¬λ ˆλ΄μ…œμ΄ μ„ νƒν•œ μœ μ €μ—κ²Œ μ΄μ „λ©λ‹ˆλ‹€.","deleteAllWarning":"λͺ¨λ“  μ›Œν¬ν”Œλ‘œ, νƒœμŠ€ν¬, 폴더, μ§€μΉ¨, ν¬λ ˆλ΄μ…œμ΄ μ‚­μ œλ©λ‹ˆλ‹€.","password":"λΉ„λ°€λ²ˆν˜Έ 확인","passwordPlaceholder":"ν˜„μž¬ λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜μ„Έμš”","confirm":"영ꡬ μ‚­μ œ","success":"계정이 μ‚­μ œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.","failed":"계정 μ‚­μ œμ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.","invalidPassword":"λΉ„λ°€λ²ˆν˜Έκ°€ μ˜¬λ°”λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€."},"editor":{"editWorkflow":"μ›Œν¬ν”Œλ‘œ νŽΈμ§‘","newWorkflow":"μƒˆ μ›Œν¬ν”Œλ‘œ λ§Œλ“€κΈ°","basicInfo":"κΈ°λ³Έ 정보","workflowTitle":"μ›Œν¬ν”Œλ‘œ 제λͺ©","workflowTitlePlaceholder":"μ›Œν¬ν”Œλ‘œ 제λͺ©","description":"μ„€λͺ… (선택사항)","descriptionPlaceholder":"μ„€λͺ… (선택)","addNode":"λ…Έλ“œ μΆ”κ°€","noNodes":"아직 λ…Έλ“œκ°€ μ—†μŠ΅λ‹ˆλ‹€","addFirstNode":"첫 번째 λ…Έλ“œ μΆ”κ°€","noNodesDesc":"μœ„ \'+\' λ²„νŠΌμœΌλ‘œ λ…Έλ“œλ₯Ό μΆ”κ°€ν•˜μ„Έμš”","save":"μ €μž₯","saving":"μ €μž₯ 쀑...","cancel":"μ·¨μ†Œ","modify":"μˆ˜μ •","nodeTypes":"κΈ°λ³Έ λ…Έλ“œ νƒ€μž…","savedTemplates":"μ €μž₯된 μ§€μΉ¨ ν…œν”Œλ¦Ώ","action":"Action","actionDesc":"지침을 μˆ˜ν–‰ν•˜κ³  κ²°κ³Ό 보고","gate":"Gate","gateDesc":"μ‚¬μš©μž μž…λ ₯ λŒ€κΈ°","loop":"Loop","loopDesc":"쑰건 μΆ©μ‘±κΉŒμ§€ 반볡","deleteNode":"λ…Έλ“œ μ‚­μ œ","nodeTitle":"λ…Έλ“œ 제λͺ©","inlineWrite":"직접 μž‘μ„±","referenceInstruction":"μ§€μΉ¨ μ°Έμ‘°","selectInstruction":"μ§€μΉ¨ 선택...","searchInstruction":"μ§€μΉ¨ 검색...","createNewInstruction":"+ μƒˆ μ§€μΉ¨ λ§Œλ“€κΈ°","instructionTitle":"μ§€μΉ¨ 제λͺ©","instructionContent":"μ§€μΉ¨ λ‚΄μš©","instructionPlaceholder":"μ§€μΉ¨ λ‚΄μš©μ„ μž…λ ₯ν•˜μ„Έμš”...","noCredential":"ν¬λ¦¬λ΄μ…œ μ—†μŒ","loopBackTo":"λ˜λŒμ•„κ°ˆ μŠ€ν…:","loopStepOption":"μŠ€ν… {step}{title}","selectStep":"-- 선택 --","auto":"μžλ™","manual":"μˆ˜λ™","nodes":"λ…Έλ“œ","pickerTitle":"λ…Έλ“œ μΆ”κ°€","pickerDesc":"μΆ”κ°€ν•  λ…Έλ“œ νƒ€μž… λ˜λŠ” μ§€μΉ¨ ν…œν”Œλ¦Ώμ„ μ„ νƒν•˜μ„Έμš”","searchPlaceholder":"검색...","credentialTitle":"ν¬λ¦¬λ΄μ…œ","autoAdvanceTitle":"μžλ™ μ§„ν–‰","attachments":"첨뢀 파일","uploadFile":"파일 μ—…λ‘œλ“œ"},"credentials":{"title":"ν¬λ¦¬λ΄μ…œ","newCredential":"μƒˆ ν¬λ¦¬λ΄μ…œ","createCredential":"ν¬λ¦¬λ΄μ…œ 생성","editCredential":"ν¬λ¦¬λ΄μ…œ νŽΈμ§‘","serviceNamePlaceholder":"μ„œλΉ„μŠ€ 이름 (예: openai, github)","defaultServiceName":"μƒˆ μ„œλΉ„μŠ€","serviceNameEditHint":"μ„œλΉ„μŠ€λͺ…을 더블클릭해 μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.","descriptionPlaceholder":"μ„€λͺ… (선택)","secretsLabel":"Secrets (Key-Value)","footerHint":"μ—°κ²° 정보와 비밀값은 μ €μž₯ ν›„ μ›Œν¬ν”Œλ‘œμ—μ„œ λ°”λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.","secretKeyPlaceholder":"KEY","secretValuePlaceholder":"VALUE","secretValueKeepPlaceholder":"(빈칸이면 κΈ°μ‘΄ μœ μ§€)","deleteConfirm":"이 ν¬λ¦¬λ΄μ…œμ„ μ‚­μ œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?","empty":"λ“±λ‘λœ ν¬λ¦¬λ΄μ…œμ΄ μ—†μŠ΅λ‹ˆλ‹€.","emptyDescription":"μ €μž₯된 λΉ„λ°€κ°’κ³Ό μ—°κ²° 정보λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.","secretCount":"μ‹œν¬λ¦Ώ {count}개","actionMenu":"ν¬λ¦¬λ΄μ…œ {service} μ•‘μ…˜ 메뉴","reveal":"평문 보기","mask":"가리기","useOnly":"μ‚¬μš© μ „μš© (평문 쑰회 λΆˆκ°€)","noAccess":"이 ν¬λ ˆλ΄μ…œμ— λŒ€ν•œ μ ‘κ·Ό κΆŒν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€","accessLevelUse":"μ‚¬μš©","accessLevelManage":"관리"},"folders":{"title":"폴더","new":"μƒˆ 폴더","myWorkspace":"λ‚΄ μž‘μ—…κ³΅κ°„","visibilityPersonal":"개인","visibilityGroup":"κ·Έλ£Ή","visibilityPublic":"곡개","visibilityInherit":"폴더따름","visibilityPersonalDesc":"λ‚˜λ§Œ λ³Ό 수 있음","visibilityGroupDesc":"μ§€μ • 그룹에 곡유됨","visibilityPublicDesc":"λͺ¨λ“  μ‚¬μš©μžκ°€ μ ‘κ·Ό κ°€λŠ₯","visibilityInheritDesc":"μƒμœ„ ν΄λ”μ˜ 곡개 λ²”μœ„λ₯Ό λ”°λ¦…λ‹ˆλ‹€","visibilitySettings":"곡개 μ„€μ •","shareWith":"곡유 λŒ€μƒ","accessLevelViewer":"읽기","accessLevelEditor":"νŽΈμ§‘","transferOwnership":"μ†Œμœ κΆŒ 이전","moveTo":"이동","emptyInFolder":"이 폴더에 λ‚΄μš©μ΄ μ—†μŠ΅λ‹ˆλ‹€","inheritedFromParent":"상속됨","createFailed":"폴더λ₯Ό λ§Œλ“€μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.","renameFailed":"이름을 λ³€κ²½ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.","deleteFailed":"폴더λ₯Ό μ‚­μ œν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.","namePlaceholder":"폴더 이름","addSubfolder":"ν•˜μœ„ 폴더 μΆ”κ°€","rename":"이름 λ³€κ²½","systemFolderReadonly":"μ‹œμŠ€ν…œ ν΄λ”μ˜ 곡개 λ²”μœ„λŠ” λ³€κ²½ν•  수 μ—†μŠ΅λ‹ˆλ‹€.","doubleClickToRename":"λ”λΈ”ν΄λ¦­μœΌλ‘œ 이름 λ³€κ²½","settingsLabel":"μ„€μ •"},"visibility":{"settings":"곡개 μ„€μ •","scope":"곡개 λ²”μœ„","changeFailed":"곡개 λ²”μœ„ λ³€κ²½ μ‹€νŒ¨","groupAddFailed":"κ·Έλ£Ή μΆ”κ°€ μ‹€νŒ¨","groupRemoveFailed":"κ·Έλ£Ή 제거 μ‹€νŒ¨","groupSharing":"κ·Έλ£Ή 곡유","noSharedGroups":"곡유된 그룹이 μ—†μŠ΅λ‹ˆλ‹€.","noGroupsHint":"μƒμ„±λœ 그룹이 μ—†μŠ΅λ‹ˆλ‹€. μ„€μ • > κ·Έλ£Ήμ—μ„œ λ¨Όμ € λ§Œλ“€μ–΄ μ£Όμ„Έμš”.","allGroupsShared":"λͺ¨λ“  그룹이 이미 κ³΅μœ λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.","selectGroup":"κ·Έλ£Ή 선택","applying":"적용 쀑…","apply":"적용","followFolder":"폴더 따름","followFolderDesc":"폴더 곡개 λ²”μœ„ 상속"},"ownership":{"owner":"μ†Œμœ μž","sharedWith":"곡유된 κ·Έλ£Ή","readOnlyPreview":"읽기 μ „μš© 미리보기 β€” νŽΈμ§‘ν•˜λ €λ©΄ μ†Œμœ μž λ˜λŠ” editor κ³΅μœ κ°€ ν•„μš”ν•©λ‹ˆλ‹€","cantEdit":"μ†Œμœ μž λ˜λŠ” editor 곡유 κΆŒν•œμ΄ ν•„μš”ν•©λ‹ˆλ‹€","cantDelete":"μ†Œμœ μžλ§Œ μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€","publicGateAdmin":"Public κ³΅κ°œλŠ” κ΄€λ¦¬μž κΆŒν•œμ΄ ν•„μš”ν•©λ‹ˆλ‹€"},"rbacErrors":{"ownershipRequired":"μ†Œμœ μž κΆŒν•œμ΄ ν•„μš”ν•©λ‹ˆλ‹€","visibilityGate":"κ΄€λ¦¬μž κΆŒν•œμ΄ ν•„μš”ν•©λ‹ˆλ‹€","credentialUseDenied":"이 ν¬λ ˆλ΄μ…œμ— λŒ€ν•œ μ‚¬μš© κΆŒν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€","credentialRevealDenied":"평문 쑰회 κΆŒν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€","folderDepthExceeded":"폴더 쀑첩은 2λ‹¨κ³„κΉŒμ§€λ§Œ κ°€λŠ₯ν•©λ‹ˆλ‹€","folderVisibilityInvalid":"μžμ‹ ν΄λ”λŠ” λΆ€λͺ¨λ³΄λ‹€ 더 넓은 visibilityλ₯Ό κ°€μ§ˆ 수 μ—†μŠ΅λ‹ˆλ‹€","folderShareDenied":"곡유 관리 κΆŒν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€","folderNotEmpty":"λΉ„μ–΄μžˆμ§€ μ•Šμ€ ν΄λ”λŠ” μ‚­μ œν•  수 μ—†μŠ΅λ‹ˆλ‹€","instructionInUse":"이 지침은 {count}개의 μ›Œν¬ν”Œλ‘œ λ…Έλ“œμ—μ„œ μ‚¬μš© 쀑이라 μ‚­μ œν•  수 μ—†μŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή μ›Œν¬ν”Œλ‘œμ—μ„œ λ¨Όμ € 지침을 λΆ„λ¦¬ν•˜μ„Έμš”.","credentialInUse":"이 ν¬λ ˆλ΄μ…œμ€ {count}개의 μ›Œν¬ν”Œλ‘œ λ…Έλ“œμ—μ„œ μ‚¬μš© 쀑이라 μ‚­μ œν•  수 μ—†μŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή μ›Œν¬ν”Œλ‘œμ—μ„œ λ¨Όμ € ν¬λ ˆλ΄μ…œμ„ λΆ„λ¦¬ν•˜μ„Έμš”."},"serverErrors":{"notFound":"μš”μ²­ν•œ λ¦¬μ†ŒμŠ€λ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€","unauthorized":"인증이 ν•„μš”ν•©λ‹ˆλ‹€","forbidden":"접근이 κ±°λΆ€λ˜μ—ˆμŠ΅λ‹ˆλ‹€","conflict":"μš”μ²­μ΄ ν˜„μž¬ μƒνƒœμ™€ μΆ©λŒν•©λ‹ˆλ‹€","preconditionFailed":"μ„ ν–‰ 쑰건이 μΆ©μ‘±λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€","myWorkspaceMissing":"My Workspaceκ°€ μ—†μŠ΅λ‹ˆλ‹€. κ΄€λ¦¬μžμ—κ²Œ λ¬Έμ˜ν•˜μ„Έμš”.","versionInactive":"이 μ›Œν¬ν”Œλ‘œ 버전은 λΉ„ν™œμ„± μƒνƒœμž…λ‹ˆλ‹€","workflowCredentialSetupRequired":"이 μ›Œν¬ν”Œλ‘œλŠ” ν¬λ ˆλ΄μ…œ 섀정이 μ™„λ£Œλ˜μ–΄μ•Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€"},"validationErrors":{"generic":"μž…λ ₯값이 μ˜¬λ°”λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€"},"instructionsPage":{"title":"μ§€μΉ¨","newInstruction":"μƒˆ μ§€μΉ¨","editInstruction":"μ§€μΉ¨ νŽΈμ§‘","createInstruction":"μ§€μΉ¨ 생성","dialogDescription":"μ§€μΉ¨ 제λͺ©, λ‚΄μš©, νƒœκ·Έμ™€ μš°μ„ μˆœμœ„λ₯Ό νŽΈμ§‘ν•©λ‹ˆλ‹€.","newInstructionLabel":"μƒˆ μ§€μΉ¨","newAgentInstruction":"μƒˆλ‘œμš΄ μ—μ΄μ „νŠΈ μ§€μΉ¨","editMode":"νŽΈμ§‘ λͺ¨λ“œ","createMode":"생성 λͺ¨λ“œ","titlePlaceholder":"μ§€μΉ¨ 제λͺ©","contentPlaceholder":"μ§€μΉ¨ λ‚΄μš©μ„ μž…λ ₯ν•˜μ„Έμš”...","searchPlaceholder":"μ§€μΉ¨ 검색...","tagsPlaceholder":"νƒœκ·Έ (μ‰Όν‘œ ꡬ뢄: λ³΄μ•ˆ, ν•„μˆ˜)","tagInputPlaceholder":"νƒœκ·Έ μž…λ ₯ ν›„ Enter λ˜λŠ” μ‰Όν‘œ","tagAddPlaceholder":"νƒœκ·Έ μΆ”κ°€","tagRemove":"νƒœκ·Έ {tag} 제거","priorityPlaceholder":"μš°μ„ μˆœμœ„","helperText":"μΉ΄λ“œλ₯Ό ν΄λ¦­ν•˜κ±°λ‚˜ λ©”λ‰΄μ˜ νŽΈμ§‘ μ•‘μ…˜μœΌλ‘œ 같은 λ‹€μ΄μ–Όλ‘œκ·Έλ₯Ό μ—½λ‹ˆλ‹€.","editorHelper":"λ§ˆν¬λ‹€μš΄ 본문을 νŽΈμ§‘ν•˜κ±°λ‚˜ λ Œλ”λ§ κ²°κ³Όλ₯Ό λ°”λ‘œ 비ꡐ할 수 μžˆμŠ΅λ‹ˆλ‹€.","editTab":"νŽΈμ§‘","previewTab":"미리보기","splitTab":"λ‘˜ λ‹€","markdownEditor":"λ§ˆν¬λ‹€μš΄ νŽΈμ§‘","renderedPreview":"λ Œλ”λ§ 미리보기","previewPlaceholder":"미리볼 λ§ˆν¬λ‹€μš΄ λ‚΄μš©μ„ μž…λ ₯ν•˜μ„Έμš”.","emptyTitle":"λ“±λ‘λœ 지침이 μ—†μŠ΅λ‹ˆλ‹€.","emptyDescription":"μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ—μ΄μ „νŠΈ 지침을 μΆ”κ°€ν•΄ μ›Œν¬ν”Œλ‘œμ—μ„œ λ°”λ‘œ μ„ νƒν•˜μ„Έμš”.","noPreview":"μ§€μΉ¨ 미리보기가 μ—†μŠ΅λ‹ˆλ‹€.","deleteTitle":"지침을 μ‚­μ œν• κΉŒμš”?","deleteDescription":"\\"{title}\\"은 μ‚­μ œ ν›„ 볡ꡬ할 수 μ—†μŠ΅λ‹ˆλ‹€.","inactive":"λΉ„ν™œμ„±","toggleDisable":"λΉ„ν™œμ„±ν™”","toggleEnable":"ν™œμ„±ν™”","updatedAt":"μˆ˜μ •: {value}","deleteConfirm":"정말 μ‚­μ œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?","actionMenu":"μ§€μΉ¨ {title} μ•‘μ…˜ 메뉴","credentialPlaceholder":"ν¬λ¦¬λ΄μ…œ 선택","noCredential":"ν¬λ¦¬λ΄μ…œ μ—†μŒ","allInstructions":"전체 μ§€μΉ¨","results":"개의 κ²°κ³Ό","movedToFolder":"지침을 ν΄λ”λ‘œ μ΄λ™ν–ˆμŠ΅λ‹ˆλ‹€."},"commandPalette":{"search":"λͺ…λ Ήμ–΄ 검색...","noResults":"κ²°κ³Όκ°€ μ—†μŠ΅λ‹ˆλ‹€.","navigate":"이동","actions":"μ•‘μ…˜","newWorkflow":"μƒˆ μ›Œν¬ν”Œλ‘œ"}}'),en:JSON.parse('{"common":{"save":"Save","cancel":"Cancel","delete":"Delete","edit":"Edit","preview":"Preview","all":"All","duplicate":"Duplicate","create":"Create","add":"Add","close":"Close","loading":"Loading...","confirm":"Confirm","search":"Search...","noResults":"No results","deleteFailed":"Failed to delete.","listView":"List view","gridView":"Grid view","copy":"Copy"},"tutorial":{"heroEyebrow":"User manual for AI coding tools like Claude and Codex","tabOverview":"Overview","tabGuides":"Practical Guides","guidesBack":"← Back to list","guidesLoading":"Loading...","guidesEmpty":"No guides available.","tryWorkflowAdd":"Add this workflow to my workspace","tryWorkflowLoading":"Loading workflow...","heroTitle":"The shortest path to building workflows","heroDesc":"A guide to quickly learn the real workflow: writing instructions, assembling workflows, executing, and reviewing results in BlueKiwi.","navStart":"Getting Started","navInstructions":"Create Instructions","navWorkflows":"Create Workflows","navExecute":"Execute","navMonitor":"Check Tasks","navExample":"Practical Example","navMcpLoop":"MCP Automation","navTips":"Tips","s1Intro":"The basic flow of BlueKiwi is simple. First create instructions, place them in a workflow, then check execution results on the tasks page.","s1Screens":"Key Pages","s1InstructionsDesc":"Write and manage instructions.","s1WorkflowsDesc":"Design execution sequences.","s1TasksDesc":"Check execution results and status.","s1CredentialsDesc":"Manage external service credentials.","s1AttachmentsTitle":"Node Attachments","s1AttachmentsDesc":"Attach scripts, reference docs, and config files to workflow nodes. Agents automatically download needed attachments during execution.","s1Order":"Recommended order","s1Order1":"1. Define work units in Instructions first.","s1Order2":"2. Assemble the execution order in Workflows.","s1Order3":"3. Connect credentials if needed.","s1Order4":"4. Check progress and results in Tasks after execution.","s1WhenToUse":"What tasks are good for BlueKiwi","s1Use1":"Tasks that require repeating the same review procedures","s1Use2":"Multi-step tasks needing human approval or input midway","s1Use3":"Tasks where execution process and results need to be tracked later","s1FoldersTitle":"Folders & Visibility","s1FoldersDesc":"Workflows and instructions are organized in folders. Clicking a folder in the sidebar also shows items from its subfolders.","s1VisPersonal":"Personal β€” Only you can see it.","s1VisGroup":"Group β€” Shared with your group members.","s1VisPublic":"Public β€” Visible to all users.","s1VisInherit":"Inherit β€” Follows the parent folder\'s visibility.","s1VisTip":"You can quickly check visibility by the icon next to each folder.","s2Intro":"Instructions are the smallest unit of a workflow. It\'s best to have a single purpose and a single expected result per instruction.","s2Good":"Good instruction example","s2GoodText":"Review the credential card list, check for duplicate service names and empty descriptions, and organize findings in a table.","s2Bad":"Instruction to avoid","s2BadText":"Review the entire system and fix everything as needed.","s2Tips":"Tips for writing good instructions","s2Tip1":"Write what to produce before writing what to judge.","s2Tip2":"Use specific criteria instead of vague expressions. e.g., \'no duplicate service names\' instead of \'make it look nice\'.","s2Tip3":"Specify the output format. e.g., bullet list, table, summary paragraph, file path.","s3Intro":"A workflow is a blueprint that connects instructions in order. Rather than adding more nodes, deciding where to place approval and repetition points is more important.","s3NodeTypes":"Understanding node types","s3ActionDesc":"A standard execution step that runs automatically.","s3GateDesc":"An approval step that requires user confirmation or response.","s3LoopDesc":"A step that repeats until a condition is met.","s3Recommended":"Recommended structure for beginners","s3Rec1":"1. Action: Collect current status.","s3Rec2":"2. Action: Organize issues and improvement points.","s3Rec3":"3. Gate: User confirms the direction.","s3Rec4":"4. Action: Produce deliverables in the confirmed direction.","s4Intro":"Clicking the Run button on the workflow detail opens a 2-step dialog. Enter a title and context, then select your AI tool (Claude Code, Codex CLI, etc.) to generate a ready-to-paste command. Paste that command into your agent to create and execute the task.","s4PreCheck":"Things to check before execution","s4Pre1":"If a step requires credentials, verify they are connected first.","s4Pre2":"If there are loop steps, ensure the exit condition is clear.","s4Pre3":"If there are approval steps, decide who will respond.","s4HitlTitle":"Responding to approval steps (HITL)","s4HitlDesc":"When a Gate node has HITL (Human-in-the-Loop) enabled, the agent waits for your approval after completing its work.","s4Hitl1":"An \'Awaiting Approval\' indicator appears in the task detail.","s4Hitl2":"Review the result and click the approve button to proceed.","s4Hitl3":"If the result is insufficient, use rewind to re-execute from a previous step.","s4StatusTitle":"Common statuses during execution","s4Running":"Running","s4RunningDesc":"The current step is in progress and new logs keep accumulating.","s4Waiting":"Waiting","s4WaitingDesc":"Waiting for user response or external conditions.","s4Failed":"Failed","s4FailedDesc":"Check the cause and re-execute or rewind if needed.","s5Intro":"On the tasks page, you switch between list and detail views. The list is for a quick overview; the detail is for deep-diving into a single execution.","s5ListTitle":"What to see in the list view","s5List1":"Which workflow generated the task","s5List2":"Current status and progress","s5List3":"What result came from the most recent step","s5DetailTitle":"What to see in the detail view","s5Detail1":"Left timeline: which steps are completed","s5Detail2":"Right result panel: deliverables, structured output, comments","s5Detail3":"For loop steps: difference between previous and latest iterations","s6Intro":"For first-time users, following a real operational flow is much easier than abstract explanations. Below is the most realistic example of creating a UI review workflow.","s6Title":"Try it: Credential card review workflow","s6Step1Title":"Step 1. Create 3 instructions","s6Step1_1":"Review the current credential card UI and list issues","s6Step1_2":"Organize issues by importance and suggest fix priorities","s6Step1_3":"Re-review after fixes and summarize remaining issues","s6Step2Title":"Step 2. Assemble the workflow","s6Step2_1":"1. Action: Review current status","s6Step2_2":"2. Gate: User confirms what to fix first","s6Step2_3":"3. Action: Organize fix proposals in the chosen direction","s6Step2_4":"4. Loop: Re-review after fixes and decide whether to end","s6Step3Title":"Step 3. Write the task context like this","s6Step3Desc":"It\'s better to be specific in the task context.","s6Step3Example":"Review the credential page card UI. Focus on duplicate service name display, action menu placement, description text density, and edit entry method, then organize fix priorities.","s6Step4Title":"Step 4. What to check in tasks after execution","s6Step4_1":"1. Quickly check which workflow is in which state in the list.","s6Step4_2":"2. Read each step\'s result and comments in the detail view.","s6Step4_3":"3. Respond immediately when a Gate step appears to continue the flow.","s6Step4_4":"4. If unsatisfied with results, rewind and proceed again.","s7Title":"MCP Integration","s7Intro":"Connecting the BlueKiwi MCP server to your AI tool automates workflow execution. The agent performs what a human would do in the web UI.","s7SetupTitle":"Connect the MCP server","s7Setup1":"Install the CLI with npm install -g bluekiwi.","s7Setup2":"Copy the token from the invite link sent by the admin.","s7Setup3":"Complete invite-based setup with bluekiwi accept <token> -s <serverURL>.","s7Setup4":"If you already have an API key, run bluekiwi init -p <profile> -s <serverURL> -k <apiKey> to connect directly or refresh MCP settings.","s7Setup5":"Run bluekiwi status to verify the active profile and connection.","s7ToolsTitle":"Key MCP tools","s7ToolStartWorkflow":"Start a new task from a workflow ID.","s7ToolAdvance":"Get the next step\'s instruction information.","s7ToolExecuteStep":"Submit the execution result for the current step.","s7ToolRequestApproval":"Request human approval at a HITL step.","s7ToolCompleteTask":"Mark the task as complete when all steps are done.","s7ToolRewind":"Rewind to a previous step to re-execute.","s7ToolHeartbeat":"Report progress in real-time during execution.","s7ToolListTasks":"List running or completed tasks.","s7ToolListAttachments":"List files attached to a workflow node.","s7ToolGetAttachment":"Download attachment content.","s7ToolUploadAttachment":"Upload a file to a workflow node.","s7FlowTitle":"Basic execution flow","s7Flow1":"1. start_workflow β†’ Create task","s7Flow2":"2. advance β†’ Receive current step instruction","s7Flow3":"3. execute_step β†’ Submit result","s7Flow4":"4. Repeat 2-3. At HITL steps, call request_approval and wait for human approval","s7Flow5":"5. complete_task β†’ Finish task","s7AutoTitle":"Auto-generation & self-improvement","s7AutoDesc":"With MCP, you can also auto-generate instructions and workflows, or design loops that analyze execution results and improve them incrementally.","s7Auto1":"Auto-derive similar workflow variants.","s7Auto2":"Analyze task logs to find frequently stuck steps.","s7Auto3":"Create improved instruction versions and compare results.","s8Tip1Title":"Start short","s8Tip1Desc":"It\'s more stable to first succeed with a short workflow of 3-4 steps, then gradually add approval or loop steps.","s8Tip2Title":"Unify result formats","s8Tip2Desc":"If instructions of the same type always use the same result format, it becomes much easier to read and compare task logs later.","s8Tip3Title":"Use Gates only where necessary","s8Tip3Desc":"Unless user response is truly needed for decision-making, ending with an Action is better for execution speed and usability.","s8Tip4Title":"Use specific names","s8Tip4Desc":"The more specific the workflow title, instruction title, and task context, the easier it is to read context from the list and detail breadcrumbs.","s8CtaTitle":"To get started right away","s8CtaDesc":"First create work units in Instructions, then assemble the sequence in Workflows. Results can be checked immediately in Tasks.","s8CtaGoal":"Recommended first goal:","s8CtaGoal1":"UI review workflow","s8CtaGoal2":"Document review workflow","navVS":"Visual Selection","navSkills":"Skill Commands","sVsIntro":"Enable visual_selection on a Gate node and the agent renders an HTML selection UI directly. The user clicks a button to respond β€” no typing required, and the workflow continues instantly.","sVsHowTitle":"How it works","sVsHow1":"When the agent reaches a Gate step, it writes bk-* component HTML.","sVsHow2":"A popup opens automatically on the task detail page.","sVsHow3":"The user clicks their choice and confirms.","sVsHow4":"The selection is sent back to the agent and the next step begins.","sVsCompTitle":"Key components","sVsDemoOptionsLabel":"bk-options β€” single-select cards (A/B/C)","sVsDemoChecklistLabel":"bk-checklist β€” multi-select","sVsDemoSliderLabel":"bk-slider β€” numeric input","sVsMoreTitle":"Other components","sVsMore1":"bk-cards β€” image card selection (for choosing layouts or chart types)","sVsMore2":"bk-ranking β€” drag-to-rank sorting","sVsMore3":"bk-matrix β€” 2\xd72 importance/urgency placement","sVsMore4":"bk-code-compare β€” compare two versions of code","sVsMore5":"bk-split, bk-pros-cons, bk-mockup, bk-timeline β€” comparison and review layouts","sVsTip":"During bk-design or bk-start execution, the agent auto-generates VS UIs at Gate nodes. Just set visual_selection: true on the workflow node β€” no extra configuration needed.","sSkIntro":"Beyond the web UI, BlueKiwi can be used directly from your AI coding tool via slash commands (/skill). Skills are the fastest and most natural path to running workflows.","sSkTableTitle":"Skill list","sSkBkStart":"Select a workflow and create/run a task. Also handles resuming and closing interrupted tasks.","sSkBkDesign":"Input a natural-language goal, design the workflow structure, and register it on the server.","sSkBkApprove":"Approve a HITL-pending step or submit a gate response from the CLI.","sSkBkImprove":"Analyze an existing workflow, create an improved version, and run a comparison.","sSkBkNext":"Find the active task and resume execution from the current step.","sSkBkReport":"Send bug reports and improvement feedback to the developer.","sSkBkInstruction":"Create, edit, and delete instruction templates, and link credentials.","sSkBkHelp":"Display all available bk-* commands with descriptions.","sSkSessionTitle":"Session restore flow","sSkSession1":"When /bk-start runs, tasks inactive for over 2 hours are automatically set to timed_out.","sSkSession2":"If there are running or timed_out tasks, you can choose: continue, close and start fresh, or start new while keeping existing.","sSkSession3":"If multiple tasks exist, the most recent one is used as the reference for your choices.","sSkInterruptTitle":"Handling interruptions","sSkInterrupt1":"Typing \'stop\', \'quit\', or similar during execution triggers an interruption dialog.","sSkInterrupt2":"Pause β€” keep the task in running state to resume later.","sSkInterrupt3":"Close task β€” calls complete_task and records it as \'closed\' in history.","s4TimedOut":"Timed Out","s4TimedOutDesc":"Automatically set after 2 hours of inactivity. Resume or close the task with /bk-start.","s4FeedbackTitle":"Feedback survey","s4FeedbackDesc":"Once all steps complete, the agent runs a quick feedback survey before marking the task done. A simple rating and comment helps improve the workflow over time.","s5RewindTitle":"Rewind","s5RewindDesc":"Press the rewind button at the bottom-left of the task detail to cancel the current step and re-run from the previous one. Use it when you\'re not satisfied with a result.","s5CommentTitle":"Comments","s5CommentDesc":"You can leave a comment below any step result. Both agents and humans can write comments, making it useful for recording per-step feedback and context.","s5TimedOutTitle":"timed_out status","s5TimedOutDesc":"Running tasks inactive for 2+ hours are automatically set to timed_out. They appear with a yellow badge in the list and can be resumed or closed with /bk-start.","s7ToolSetVisualHtml":"Register the HTML UI to render at a VS Gate node.","s7ToolGetWebResponse":"Poll for the user\'s VS click result.","s7ToolSaveFeedback":"Save feedback to the server before completing the task.","s7ToolSubmitReport":"Submit a developer feedback report to the server.","s7ToolListWorkflows":"List registered workflows.","s7ToolListMyGroups":"List the current user\'s groups.","s7FeedbackTitle":"Completion flow","s7FeedbackDesc":"When the last workflow step finishes, the agent runs save_feedback β†’ complete_task in order. It never calls complete_task directly without collecting feedback first."},"nav":{"workflows":"Workflows","tasks":"Tasks","credentials":"Credentials","instructions":"Instructions","tutorial":"Tutorial","apiDocs":"API Docs","marketplace":"Marketplace","settings":"Settings","main":"Main","resources":"Resources","home":"Home","new":"New","github":"GitHub Repository","license":"License","support":"Support Developer","version":"Version","updateAvailable":"Update available","versionDialogTitle":"BlueKiwi version","versionDialogDescUpdate":"A newer version is available. You are on v{current}, and the latest release is v{latest}.","versionDialogDescCurrent":"You are using the latest known version: v{current}.","updateMethodCliTitle":"If you installed the CLI","updateMethodNpmTitle":"If you want to reinstall globally","updateMethodDockerTitle":"If you run BlueKiwi with Docker Compose","viewReleaseNotes":"View release notes"},"auth":{"login":"Login","logout":"Logout","email":"Email","password":"Password","emailPlaceholder":"you@example.com","passwordPlaceholder":"β€’β€’β€’β€’β€’β€’β€’β€’","logoAlt":"BlueKiwi logo","brandTagline":"Agent Workflow Engine","loginButton":"Sign in","loggingIn":"Signing in...","noAccount":"Don\'t have an account?","contactAdmin":"Contact administrator","invalidCredentials":"Invalid email or password.","enterBoth":"Please enter email and password.","connectionError":"Cannot connect to server.","loginFailed":"Login failed."},"setup":{"title":"Create your first admin account","name":"Name","namePlaceholder":"Admin name","emailPlaceholder":"admin@example.com","passwordPlaceholder":"6+ characters","confirmPassword":"Confirm password","confirmPlaceholder":"Re-enter password","createButton":"Create admin account","creating":"Creating...","superuserNote":"This account will have superuser privileges","passwordMinLength":"Password must be at least 6 characters.","passwordMismatch":"Passwords do not match.","setupFailed":"Setup failed.","serverError":"Server error ({status}). Check logs: ~/.bluekiwi/quickstart/<profile>/logs/app.log"},"changePassword":{"title":"Please change your password","currentPassword":"Current password","currentPasswordPlaceholder":"Current password","newPassword":"New password","newPasswordPlaceholder":"At least 6 characters","confirmNewPassword":"Confirm new password","confirmNewPasswordPlaceholder":"Re-enter new password","changeButton":"Change password","changing":"Changing...","minLength":"New password must be at least 6 characters.","mismatch":"New passwords do not match.","changeFailed":"Failed to change password.","changed":"Password has been changed."},"invite":{"title":"You’re invited to BlueKiwi","body":"{email}, join the workspace with {role} access.","username":"Username","password":"Password","accept":"Accept invite and create account","success":{"title":"Account created","installHint":"Connect BlueKiwi in your CLI with this command","goLogin":"Go to login"},"error":{"not_found":"Invite link was not found","expired":"Invite link has expired","already_accepted":"Invite link was already used","network_error":"Could not reach the server"}},"dashboard":{"title":"Dashboard","subtitle":"Overview of workflows and task status.","workflows":"Workflows","activeTasks":"Active","completedTasks":"Completed","teamMembers":"Team Members","registeredWorkflows":"Registered workflows","active":"Active tasks","completed":"Completed tasks","registeredUsers":"Registered users","recentActivity":"Recent Activity","noActivity":"No activity yet.","activeTasksList":"Active Tasks","viewAll":"View all","noActiveTasks":"No active tasks.","quickLinks":"Quick Links","workflowManagement":"Workflow Management","workflowManagementDesc":"Create and edit workflows","taskTitle":"Tasks","taskDesc":"Real-time execution status","tutorialTitle":"Tutorial","tutorialDesc":"BlueKiwi usage guide","apiDocsTitle":"API Docs","apiDocsDesc":"REST API reference","timeJustNow":"just now","timeMinutesAgo":"{n}m ago","timeHoursAgo":"{n}h ago","timeDaysAgo":"{n}d ago"},"workflows":{"title":"Workflows","newWorkflow":"New Workflow","detailTitle":"Workflow Details","edit":"Edit","export":"Export","import":"Import","exportTitle":"Export Workflow","importTitle":"Import Workflow","exportDescription":"Save this workflow as a JSON file.","importDescription":"Import a workflow saved as a JSON file.","history":"History","nodesTab":"Nodes","meta":"Metadata","version":"Version","nodeCount":"Nodes","nodeStep":"Step {step}","updatedAt":"Updated","run":"Run","runFailed":"Failed to start the workflow run.","runStarted":"Started task #{id}.","invalidId":"Invalid workflow ID.","notFound":"Workflow not found.","backToList":"Back to list","noDescription":"No description provided.","noInstruction":"No instruction attached.","runningTasks":"{count} task(s) for this workflow","quickTasksTitle":"Linked Tasks","quickTasksDesc":"See recent runs and current execution status at a glance.","recentTasks":"Recent runs","totalTasksLabel":"Total","viewAllTasks":"View all tasks","openHistory":"Open history","noTasks":"No tasks have been run for this workflow yet.","noNodes":"No nodes added.","noNodesDesc":"Add nodes to inspect the workflow structure here.","metaId":"Workflow ID","metaVersion":"Version","metaParent":"Parent workflow","metaNoParent":"None","metaContract":"Evaluation contract","noEvaluation":"No evaluation contract configured.","empty":"No workflows","emptyDesc":"Create your first workflow","deleteConfirm":"Delete Workflow","deleteDesc":"Are you sure you want to delete this? This action cannot be undone.","deleted":"Workflow has been deleted.","duplicated":"Workflow has been duplicated.","nodes":"nodes","saved":"Workflow has been saved.","copy":"Copy","versionsTab":"Versions","publishNewVersion":"Publish new version","publishedVersion":"Published: {version}","publishFailed":"Failed to publish a new version.","activeBadge":"Active","inactiveBadge":"Archived","draftBadge":"Draft","activate":"Activate","deactivate":"Deactivate","activated":"Version activated.","deactivated":"Version deactivated.","activateFailed":"Failed to activate.","deactivateFailed":"Failed to deactivate.","versionHistoryTitle":"Version History","versionHistoryDesc":"Browse every version in this family and pick which one is currently live.","lineage":"Lineage","lineageDesc":"Parent-derived relationships across versions.","noParent":"Root","createdAt":"Created","actions":"Actions","currentlyViewing":"Current","showArchived":"Include archived","hideArchived":"Hide archived","inactiveEditWarning":"This is not the active version. Changes save in place and won\'t affect production.","inactiveStartBlocked":"This version is archived and cannot start tasks. Activate it first.","pickVersion":"Choose version","pickVersionDefault":"Use active version","versionInactive409":"The selected version is archived.","folders":"Folders","allWorkflows":"All Workflows","results":" results","movedToFolder":"Workflow moved to folder."},"runDialog":{"step1Label":"Task setup","step2Label":"Get command","step1Desc":"Optionally give this run a title and context. Both fields are optional.","titleLabel":"Title (optional)","titlePlaceholder":"e.g. Q1 Analysis, Security Audit...","contextLabel":"Request (optional)","contextPlaceholder":"Describe what you want the agent to accomplish.","nextBtn":"Next","backBtn":"Back","toolLabel":"Select AI tool","commandLabel":"Paste into session","copyBtn":"Copy","usageHint":"Paste the command above into your AI coding agent session to start the workflow."},"tasks":{"title":"Tasks","empty":"No tasks","emptyDesc":"Tasks will appear here when you run a workflow","all":"All","inProgress":"In Progress","completed":"Completed","pending":"Pending","running":"Running","failed":"Failed","timedOut":"Timed Out","cancelled":"Stopped","rewind":"Rewind","stopTask":"Stop","closeTask":"Close","resumeTask":"Resume","cancelTask":"Cancel","statusCompletedMessage":"All steps have been completed.","userInput":"User Input","thinking":"Thinking","assistantOutput":"Assistant Output","artifacts":"Artifacts","comments":"Comments","addComment":"Add a comment...","send":"Send","wsRealtime":"Real-time updates","deleteConfirm":"Delete task #{id}?","deleteTitle":"Delete task","deleteDescription":"Are you sure you want to delete task #{id}? This action cannot be undone.","workflowFallback":"Workflow #{id}","taskFallback":"Task #{id}","stepLabel":"Step {step}","stepTitleFallback":"Step {step}","steps":"steps","taskNotFound":"Task not found.","backToList":"Back to list","selectStep":"Select a step to view details","hitlPendingApproval":"This step requires your approval before proceeding.","hitlApprove":"Approve","hitlApproved":"Approved β€” execution will continue.","awaitingResponse":"Awaiting response","responseSubmitted":"Response submitted","responseSelections":"Selections","responseComment":"Additional comment","responseFields":"Field inputs","responseOptionComments":"Per-option comments","responseValues":"Values","responseRanking":"Ranking","responseMatrix":"Matrix placement","typeResponse":"Type your response...","viewVisual":"View Visual","selectVisual":"Select Visual","visualSelectHint":"Select an option below, then click Confirm.","visualViewer":"Visual Viewer","closeVisualViewer":"Close","input":"Input","output":"Output","showPreviousIterations":"Show {n} previous iteration(s)","hidePreviousIterations":"Hide previous iterations","iteration":"Iteration","latest":"Latest","defaultAuthor":"User"},"settings":{"title":"Settings","profile":"Profile","apiKeys":"API Keys","teamManagement":"Team Management","notifications":"Notifications","notificationsTitle":"Notification Settings","notificationsPlaceholder":"Notification settings coming soon.","notificationsBody":"Email notifications, Slack integration, and more are in development.","name":"Name","email":"Email","role":"Role","changePassword":"Change Password","saved":"Profile has been saved.","saveFailed":"Failed to save.","profileInfo":"Profile Information","profileDesc":"View and edit your account information.","namePlaceholder":"Enter your name","nameRequired":"Please enter a name.","saving":"Saving...","userLoadFailed":"Failed to load user information."},"apiKeys":{"title":"API Keys","description":"Manage keys for API calls.","keyName":"Name","owner":"Owner","keyPrefix":"Key prefix","expiresAt":"Expires at","status":"Status","action":"Action","revoke":"Revoke","revoked":"Revoked","activeStatus":"Active","none":"None","noName":"(unnamed)","newKey":"New API Key","newKeyTitle":"Create New API Key","newKeyDesc":"Enter a name for the API key.","namePlaceholder":"e.g. production-key","generate":"Create","generating":"Creating...","keyCreated":"API Key Created","keyWarning":"This key will not be shown again. Copy it to a safe place.","cliInitLabel":"CLI setup command","copyCliCommand":"Copy CLI command","keyWarning2":"* This key cannot be viewed again after closing this dialog.","copied":"Copied to clipboard.","revokeConfirm":"Revoke API Key","revokeDesc":"Are you sure you want to revoke this key? This action cannot be undone.","revokeSuccess":"API Key has been revoked.","revokeFailed":"Failed to revoke API Key.","loadFailed":"Failed to load API keys.","noKeys":"No API keys registered.","nameRequired":"Please enter a key name.","createFailed":"Failed to create.","keyNameLabel":"Key name"},"team":{"title":"Team Management","description":"View and invite team members.","inviteMember":"Invite Member","inviteTitle":"Invite Member","inviteDesc":"Enter the new team member\'s information.","invite":"Invite","inviting":"Inviting...","memberAdded":"Team member has been invited.","addFailed":"Failed to invite.","name":"Name","namePlaceholder":"Name","email":"Email","emailPlaceholder":"email@example.com","password":"Password","passwordPlaceholder":"Initial password","role":"Role","roleAdmin":"Admin","roleEditor":"Editor","roleViewer":"Viewer","allFieldsRequired":"Please fill in all fields.","loadFailed":"Failed to load members.","noMembers":"No members registered.","invitesLoadFailed":"Failed to load invites.","emailRequired":"Email is required.","inviteCreated":"Invite link created.","inviteCreateFailed":"Failed to create invite.","inviteCancelled":"Invite cancelled.","inviteCancelFailed":"Failed to cancel invite.","inviteLinkCopied":"Invite link copied.","inviteDescription":"Share an invite link instead of creating the account directly.","shareLinkExpires":"Share this link (expires {date}):","copyLink":"Copy link","creating":"Creating...","createInvite":"Create invite","members":"Team members","invites":"Invites","noInvites":"No invites yet.","invitePending":"Pending until {date}","inviteAccepted":"Accepted {date}","copyInviteLink":"Copy","permViewWorkflows":"View workflows","permExecuteWorkflows":"Execute workflows","permCreateEditWorkflows":"Create/edit workflows","permDeleteOwnWorkflows":"Delete workflows (own)","permViewCredentials":"View credentials","permCreateEditCredentials":"Create/edit credentials","permViewMembers":"View members","permManageMembers":"Manage members","permManageFolderShares":"Manage folder shares","deleteUser":"Delete","deleteUserTitle":"Delete User","deleteUserDesc":"Process related data and permanently delete this account. This action cannot be undone.","deleteUserMode":"Resource handling","deleteUserTransfer":"Transfer to another user","deleteUserDeleteAll":"Delete all","deleteUserTransferTo":"Transfer to","deleteUserSelectTarget":"Select user","deleteUserTransferWarning":"Workflows, folders, instructions, and credentials will be transferred to the selected user.","deleteUserDeleteAllWarning":"All workflows, tasks, folders, instructions, and credentials will be deleted.","deleteUserSuccess":"User has been deleted.","deleteUserFailed":"Failed to delete user.","deleteUserCannotSuperuser":"Superuser accounts cannot be deleted."},"groups":{"title":"Group Management","description":"Create groups and manage their members.","tabLabel":"Groups","newGroup":"New group","groupName":"Group name","groupNamePlaceholder":"Enter group name","noGroups":"No groups created yet.","selectGroup":"Select a group on the left.","members":"Members","noMembers":"No members.","addMember":"Add member","selectUser":"Select user","deleteGroup":"Delete group","deleteConfirm":"Delete this group?","created":"Group created.","createFailed":"Failed to create group.","memberAdded":"Member added.","memberAddFailed":"Failed to add member.","memberRemoved":"Member removed.","memberRemoveFailed":"Failed to remove member.","deleted":"Group deleted.","deleteFailed":"Failed to delete group.","nameRequired":"Please enter a group name."},"deleteAccount":{"title":"Delete Account","description":"Permanently delete your account. This action cannot be undone.","button":"Delete Account","dialogTitle":"Delete your account?","dialogDesc":"Your account will be permanently deleted. This action cannot be undone.","mode":"Resource handling","transfer":"Transfer to another user","deleteAll":"Delete all","transferTo":"Transfer to","selectTarget":"Select user","transferWarning":"Workflows, folders, instructions, and credentials will be transferred to the selected user.","deleteAllWarning":"All workflows, tasks, folders, instructions, and credentials will be deleted.","password":"Confirm password","passwordPlaceholder":"Enter your current password","confirm":"Permanently delete","success":"Account has been deleted.","failed":"Failed to delete account.","invalidPassword":"Password is incorrect."},"editor":{"editWorkflow":"Edit Workflow","newWorkflow":"Create New Workflow","basicInfo":"Basic Info","workflowTitle":"Workflow Title","workflowTitlePlaceholder":"Workflow title","description":"Description (optional)","descriptionPlaceholder":"Description (optional)","addNode":"Add Node","noNodes":"No nodes yet","addFirstNode":"Add first node","noNodesDesc":"Use the \'+\' button above to add nodes","save":"Save","saving":"Saving...","cancel":"Cancel","modify":"Update","nodeTypes":"Base Node Types","savedTemplates":"Saved Instruction Templates","action":"Action","actionDesc":"Execute instructions and report results","gate":"Gate","gateDesc":"Wait for user input","loop":"Loop","loopDesc":"Repeat until condition is met","deleteNode":"Delete node","nodeTitle":"Node title","inlineWrite":"Write inline","referenceInstruction":"Reference instruction","selectInstruction":"Select instruction...","searchInstruction":"Search instructions...","createNewInstruction":"+ Create new instruction","instructionTitle":"Instruction title","instructionContent":"Instruction content","instructionPlaceholder":"Enter instruction content...","noCredential":"No Credential","loopBackTo":"Loop back to step:","loopStepOption":"Step {step}{title}","selectStep":"-- Select --","auto":"Auto","manual":"Manual","nodes":"Nodes","pickerTitle":"Add Node","pickerDesc":"Select a node type or instruction template to add","searchPlaceholder":"Search...","credentialTitle":"Credential","autoAdvanceTitle":"Auto advance","attachments":"Attachments","uploadFile":"Upload file"},"credentials":{"title":"Credentials","newCredential":"New Credential","createCredential":"Create Credential","editCredential":"Edit Credential","serviceNamePlaceholder":"Service name (e.g. openai, github)","defaultServiceName":"New Service","serviceNameEditHint":"Double-click the service name to rename it.","descriptionPlaceholder":"Description (optional)","secretsLabel":"Secrets (Key-Value)","footerHint":"Saved connection details and secrets are available in workflows immediately.","secretKeyPlaceholder":"KEY","secretValuePlaceholder":"VALUE","secretValueKeepPlaceholder":"(leave blank to keep current value)","deleteConfirm":"Delete this credential?","empty":"No credentials registered.","emptyDescription":"Manage saved secrets and connection information.","secretCount":"{count} secret(s)","actionMenu":"Credential {service} action menu","reveal":"Reveal","mask":"Mask","useOnly":"Use only (plaintext hidden)","noAccess":"You do not have access to this credential","accessLevelUse":"Use","accessLevelManage":"Manage"},"folders":{"title":"Folders","new":"New folder","myWorkspace":"My Workspace","visibilityPersonal":"Personal","visibilityGroup":"Group","visibilityPublic":"Public","visibilityInherit":"Inherit","visibilityPersonalDesc":"Only visible to you","visibilityGroupDesc":"Shared with specified groups","visibilityPublicDesc":"Accessible to all users","visibilityInheritDesc":"Inherits visibility from parent folder","visibilitySettings":"Visibility settings","shareWith":"Shared with","accessLevelViewer":"Viewer","accessLevelEditor":"Editor","transferOwnership":"Transfer ownership","moveTo":"Move","emptyInFolder":"This folder is empty","inheritedFromParent":"inherited","createFailed":"Failed to create folder.","renameFailed":"Failed to rename.","deleteFailed":"Failed to delete folder.","namePlaceholder":"Folder name","addSubfolder":"Add subfolder","rename":"Rename","systemFolderReadonly":"System folder visibility cannot be changed.","doubleClickToRename":"Double-click to rename","settingsLabel":"Settings"},"visibility":{"settings":"Visibility","scope":"Visibility","changeFailed":"Failed to change visibility","groupAddFailed":"Failed to add group","groupRemoveFailed":"Failed to remove group","groupSharing":"Group sharing","noSharedGroups":"No groups shared.","noGroupsHint":"No groups created. Create groups in Settings > Groups first.","allGroupsShared":"All groups are already shared.","selectGroup":"Select group","applying":"Applying...","apply":"Apply","followFolder":"Follow folder","followFolderDesc":"Inherits folder visibility"},"ownership":{"owner":"Owner","sharedWith":"Shared groups","readOnlyPreview":"Read-only preview β€” editing requires owner or editor share","cantEdit":"Requires owner or editor share","cantDelete":"Only the owner can delete","publicGateAdmin":"Public publish requires admin"},"rbacErrors":{"ownershipRequired":"Owner access required","visibilityGate":"Admin access required","credentialUseDenied":"You cannot use this credential","credentialRevealDenied":"You cannot reveal this credential","folderDepthExceeded":"Folder nesting is limited to 2 levels","folderVisibilityInvalid":"Child folder cannot be more visible than its parent","folderShareDenied":"Not allowed to manage shares","folderNotEmpty":"Cannot delete a non-empty folder","instructionInUse":"This instruction is referenced by {count} workflow node(s) and cannot be deleted. Detach it from those workflows first.","credentialInUse":"This credential is referenced by {count} workflow node(s) and cannot be deleted. Detach it from those workflows first."},"serverErrors":{"notFound":"Requested resource not found","unauthorized":"Authentication required","forbidden":"Access denied","conflict":"Request conflicts with current state","preconditionFailed":"Precondition failed","myWorkspaceMissing":"My Workspace is missing. Contact your administrator.","versionInactive":"This workflow version is inactive","workflowCredentialSetupRequired":"This workflow requires credential setup before it can run"},"validationErrors":{"generic":"Invalid input"},"instructionsPage":{"title":"Instructions","newInstruction":"New Instruction","editInstruction":"Edit Instruction","createInstruction":"Create Instruction","dialogDescription":"Edit the instruction title, content, tags, and priority.","newInstructionLabel":"New Instruction","newAgentInstruction":"New agent instruction","editMode":"Edit mode","createMode":"Create mode","titlePlaceholder":"Instruction title","contentPlaceholder":"Enter instruction content...","searchPlaceholder":"Search instructions...","tagsPlaceholder":"Tags (comma separated: security, required)","tagInputPlaceholder":"Type a tag and press Enter or comma","tagAddPlaceholder":"Add tag","tagRemove":"Remove tag {tag}","priorityPlaceholder":"Priority","helperText":"Click a card or use the edit action from the menu to open the same dialog.","editorHelper":"Edit the Markdown body or compare it with the rendered result immediately.","editTab":"Edit","previewTab":"Preview","splitTab":"Split","markdownEditor":"Markdown editor","renderedPreview":"Rendered preview","previewPlaceholder":"Enter Markdown content to preview.","emptyTitle":"No instructions registered.","emptyDescription":"Add reusable agent instructions so you can select them directly in workflows.","noPreview":"No instruction preview available.","deleteTitle":"Delete instruction?","deleteDescription":"\\"{title}\\" cannot be recovered after deletion.","inactive":"Inactive","toggleDisable":"Disable","toggleEnable":"Enable","updatedAt":"Updated: {value}","deleteConfirm":"Delete this instruction?","actionMenu":"Instruction {title} action menu","credentialPlaceholder":"Select credential","noCredential":"No credential","allInstructions":"All instructions","results":" results","movedToFolder":"Instruction moved to folder."},"commandPalette":{"search":"Search commands...","noResults":"No results found.","navigate":"Navigate","actions":"Actions","newWorkflow":"New Workflow"}}')},r=(0,o.createContext)(null);function n({children:e}){let[t,s]=(0,o.useState)(()=>{let e=window.localStorage.getItem("locale");return"ko"===e||"en"===e?e:"ko"}),l=(0,o.useCallback)(e=>{s(e),localStorage.setItem("locale",e),document.documentElement.lang=e},[]),d=(0,o.useCallback)((e,s)=>{var i;return i=function(e,t){let s=t.split("."),i=e;for(let e of s){if(null==i||"object"!=typeof i)return t;i=i[e]}return"string"==typeof i?i:t}(a[t]??a.ko,e),s?Object.entries(s).reduce((e,[t,s])=>e.replaceAll(`{${t}}`,String(s)),i):i},[t]);return(0,i.jsx)(r.Provider,{value:{locale:t,setLocale:l,t:d},children:e})}function l(){let e=(0,o.useContext)(r);if(!e)throw Error("useTranslation must be used within I18nProvider");return e}}}]);