idea-manager 2.3.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/.next/build-manifest.json +2 -2
  2. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  3. package/.next/server/app/_global-error.html +2 -2
  4. package/.next/server/app/_global-error.rsc +1 -1
  5. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  6. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/_not-found.html +2 -2
  13. package/.next/server/app/_not-found.rsc +1 -1
  14. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/api/advisor-actions/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/archive/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/filesystem/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/filesystem/tree/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/global-advisor/route.js +1 -1
  25. package/.next/server/app/api/global-advisor/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/global-memo/route.js +2 -2
  27. package/.next/server/app/api/global-memo/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/maintenance/route.js +2 -2
  30. package/.next/server/app/api/maintenance/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/projects/[id]/advisor/route.js +1 -1
  32. package/.next/server/app/api/projects/[id]/advisor/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/projects/[id]/apply-distribute/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/projects/[id]/auto-distribute/route.js +2 -2
  35. package/.next/server/app/api/projects/[id]/auto-distribute/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/projects/[id]/brainstorm/route.js +2 -2
  37. package/.next/server/app/api/projects/[id]/brainstorm/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/projects/[id]/git-sync/route.js +2 -2
  39. package/.next/server/app/api/projects/[id]/git-sync/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/projects/[id]/route.js +2 -2
  41. package/.next/server/app/api/projects/[id]/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/route.js +2 -2
  43. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route.js +1 -1
  45. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route.js +2 -2
  47. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route.js +1 -1
  49. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route.js +2 -2
  52. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/projects/[id]/sub-projects/route.js +2 -2
  55. package/.next/server/app/api/projects/[id]/sub-projects/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/projects/route.js +2 -2
  57. package/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/search/route.js +2 -2
  59. package/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/sync/route.js +2 -2
  61. package/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/tasks/[taskId]/move/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/index.html +2 -2
  66. package/.next/server/app/index.rsc +2 -2
  67. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  68. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  69. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  70. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  71. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  72. package/.next/server/app/page.js +1 -1
  73. package/.next/server/app/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/projects/[id]/page_client-reference-manifest.js +1 -1
  75. package/.next/server/app-paths-manifest.json +13 -13
  76. package/.next/server/chunks/697.js +2 -2
  77. package/.next/server/pages/404.html +2 -2
  78. package/.next/server/pages/500.html +2 -2
  79. package/.next/static/chunks/app/{page-a0491c7ecdd773ca.js → page-835e6af14011d7a8.js} +1 -1
  80. package/bin/postinstall.js +27 -7
  81. package/package.json +1 -1
  82. package/src/cli.ts +43 -10
  83. package/src/components/ui/FileTreeDrawer.tsx +1 -1
  84. package/src/lib/ai/client.ts +21 -7
  85. package/src/lib/auto-update.ts +22 -3
  86. package/src/lib/db/index.ts +29 -5
  87. package/src/lib/scheduler.ts +9 -3
  88. package/src/lib/sync/git.ts +17 -14
  89. package/src/lib/watcher.ts +4 -4
  90. /package/.next/static/{cNwwQZS0Jhwz2yyh3ks6E → 8qtkIvEkJ-lmfHkJP6hlo}/_buildManifest.js +0 -0
  91. /package/.next/static/{cNwwQZS0Jhwz2yyh3ks6E → 8qtkIvEkJ-lmfHkJP6hlo}/_ssgManifest.js +0 -0
@@ -26,7 +26,7 @@ ${b}
26
26
  - 기술 스택: React + TypeScript + Vite (monorepo)
27
27
  - DB: PostgreSQL (jabis 스키마)
28
28
  - 한국어로 응답할 것
29
- - 코드 제안 시 기존 컨벤션을 따를 것`,className:"w-full bg-input border border-border rounded-lg px-4 py-3 text-sm text-foreground resize-none focus:border-primary focus:outline-none leading-relaxed font-mono min-h-[300px]"})}),(0,L.jsxs)("div",{className:"flex items-center justify-between px-5 py-3 border-t border-border",children:[(0,L.jsx)("span",{className:"text-xs text-muted-foreground",children:"Cmd+Enter to save"}),(0,L.jsxs)("div",{className:"flex items-center gap-2",children:[(0,L.jsx)("button",{onClick:d,className:"px-3 py-1.5 text-xs text-muted-foreground hover:text-foreground border border-border rounded-md transition-colors",children:"Cancel"}),(0,L.jsx)("button",{onClick:()=>c(e),className:"px-3 py-1.5 text-xs bg-primary text-white rounded-md hover:bg-primary-hover transition-colors",children:"Save"})]})]})]})]}):null}let xv={success:{icon:"✅",color:"text-success"},error:{icon:"❌",color:"text-destructive"},"no-git":{icon:"➖",color:"text-muted-foreground"},"no-path":{icon:"➖",color:"text-muted-foreground"}};function xw({open:a,results:b,onClose:c}){let d=(0,M.useRef)(null);if(!a)return null;let e=b.filter(a=>"success"===a.status).length,f=b.filter(a=>"error"===a.status).length,g=b.filter(a=>"no-git"===a.status||"no-path"===a.status).length;return(0,L.jsx)("div",{ref:d,onClick:a=>{a.target===d.current&&c()},className:"fixed inset-0 z-50 flex items-center justify-center",style:{background:"rgba(0,0,0,0.5)",backdropFilter:"blur(2px)"},children:(0,L.jsxs)("div",{className:"bg-card border border-border rounded-xl shadow-2xl shadow-black/40 w-full max-w-md mx-4 animate-dialog-in",children:[(0,L.jsxs)("div",{className:"p-5 border-b border-border",children:[(0,L.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:"Git Sync Results"}),(0,L.jsxs)("p",{className:"text-xs text-muted-foreground mt-1",children:[e," synced, ",f," failed, ",g," skipped"]})]}),(0,L.jsx)("div",{className:"max-h-64 overflow-y-auto p-3 space-y-1.5",children:0===b.length?(0,L.jsx)("p",{className:"text-xs text-muted-foreground text-center py-4",children:"No projects with linked folders"}):b.map(a=>{let b=xv[a.status];return(0,L.jsxs)("div",{className:"flex items-start gap-2 p-2 rounded-lg bg-muted/50",children:[(0,L.jsx)("span",{className:"text-sm flex-shrink-0",children:b.icon}),(0,L.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,L.jsx)("div",{className:"text-xs font-medium truncate",children:a.projectName}),(0,L.jsx)("div",{className:`text-xs ${b.color} truncate`,title:a.message,children:a.message})]})]},a.projectId)})}),(0,L.jsx)("div",{className:"flex justify-end px-5 pb-4 pt-2",children:(0,L.jsx)("button",{onClick:c,className:"px-3 py-1.5 text-xs text-muted-foreground hover:text-foreground bg-muted hover:bg-card-hover border border-border rounded-md transition-colors",children:"Close"})})]})})}let xx={ts:"TS",tsx:"TX",js:"JS",jsx:"JX",json:"{}",md:"MD",css:"CS",scss:"SC",html:"HT",svg:"SV",png:"PN",jpg:"JP",py:"PY",go:"GO",rs:"RS",java:"JA",sql:"SQ",sh:"SH",yml:"YM",yaml:"YM",toml:"TM",xml:"XM",txt:"TX",env:"EN",lock:"LK",gitignore:"GI"};function xy({rootPath:a,onClose:b}){let[c,d]=(0,M.useState)({}),[e,f]=(0,M.useState)(new Set([a])),g=(0,M.useRef)(null),h=(0,M.useCallback)(async a=>{d(b=>({...b,[a]:{entries:[],loaded:!1,loading:!0}}));try{let b=await fetch(`/api/filesystem/tree?path=${encodeURIComponent(a)}`);if(!b.ok)throw Error("Failed to load");let c=await b.json();d(b=>({...b,[a]:{entries:c.entries,loaded:!0,loading:!1}}))}catch{d(b=>({...b,[a]:{entries:[],loaded:!0,loading:!1,error:"Failed to load"}}))}},[]),i=(a,b)=>{let d=c[a];return d?d.loading?(0,L.jsx)("div",{className:"flex items-center gap-2 py-1",style:{paddingLeft:16*b+12},children:(0,L.jsx)("span",{className:"text-xs text-muted-foreground animate-pulse",children:"Loading..."})}):d.error?(0,L.jsx)("div",{className:"flex items-center gap-2 py-1",style:{paddingLeft:16*b+12},children:(0,L.jsx)("span",{className:"text-xs text-destructive",children:d.error})}):0===d.entries.length?(0,L.jsx)("div",{className:"flex items-center gap-2 py-1",style:{paddingLeft:16*b+12},children:(0,L.jsx)("span",{className:"text-xs text-muted-foreground italic",children:"Empty"})}):d.entries.map(a=>{var d,g;let j="directory"===a.type,k=e.has(a.path);return(0,L.jsxs)("div",{children:[(0,L.jsx)("div",{className:`flex items-center gap-1.5 py-[3px] pr-3 cursor-pointer transition-colors hover:bg-card-hover group ${j?"text-foreground":"text-muted-foreground"}`,style:{paddingLeft:16*b+12},onClick:()=>{var b;return j&&(b=a.path,void f(a=>{let d=new Set(a);return d.has(b)?d.delete(b):(d.add(b),c[b]?.loaded||c[b]?.loading||h(b)),d}))},children:j?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)("span",{className:"w-4 text-center text-xs text-muted-foreground flex-shrink-0",children:k?"▼":"▶"}),(0,L.jsx)("span",{className:"text-sm flex-shrink-0",children:k?"\uD83D\uDCC2":"\uD83D\uDCC1"}),(0,L.jsx)("span",{className:"text-sm truncate flex-1 font-medium",children:a.name})]}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)("span",{className:"w-4 flex-shrink-0"}),(0,L.jsx)("span",{className:"text-[10px] font-mono w-5 text-center flex-shrink-0 text-muted-foreground/70",children:(d=a.extension)?xx[d]||d.slice(0,2).toUpperCase():"--"}),(0,L.jsx)("span",{className:"text-sm truncate flex-1",children:a.name}),void 0!==a.size&&(0,L.jsx)("span",{className:"text-[10px] text-muted-foreground/50 tabular-nums flex-shrink-0",children:(g=a.size)<1024?`${g}B`:g<1048576?`${(g/1024).toFixed(0)}K`:`${(g/1048576).toFixed(1)}M`})]})}),j&&k&&i(a.path,b+1)]},a.path)}):null},j=a.split("/").pop()||a;return(0,L.jsxs)("div",{ref:g,className:"fixed inset-0 z-50 flex justify-end",onClick:a=>{a.target===g.current&&b()},children:[(0,L.jsx)("div",{className:"absolute inset-0 bg-black/40 backdrop-blur-[2px]"}),(0,L.jsxs)("div",{className:"relative w-[420px] max-w-[85vw] h-full bg-card border-l border-border shadow-2xl flex flex-col animate-drawer-in",children:[(0,L.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border flex-shrink-0",children:[(0,L.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,L.jsx)("span",{className:"text-base",children:"\uD83D\uDCC2"}),(0,L.jsxs)("div",{className:"min-w-0",children:[(0,L.jsx)("h2",{className:"text-sm font-semibold truncate",children:j}),(0,L.jsx)("p",{className:"text-[10px] text-muted-foreground font-mono truncate",children:a})]})]}),(0,L.jsx)("button",{onClick:b,className:"text-muted-foreground hover:text-foreground transition-colors text-lg px-1",title:"Close (ESC)",children:"\xd7"})]}),(0,L.jsx)("div",{className:"flex-1 overflow-y-auto py-2",children:i(a,0)}),(0,L.jsx)("div",{className:"px-4 py-2 border-t border-border flex-shrink-0",children:(0,L.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"ESC to close"})})]})]})}function xz({open:a,projectId:b,onClose:c,onApplied:d}){let[e,f]=(0,M.useState)(!1),[g,h]=(0,M.useState)(!1),[i,j]=(0,M.useState)(null),[k,l]=(0,M.useState)([]),[m,n]=(0,M.useState)(new Set),o=async()=>{f(!0),j(null);try{let a=await fetch(`/api/projects/${b}/auto-distribute`,{method:"POST"}),c=await a.json();if(!a.ok){let a=c.raw?`
29
+ - 코드 제안 시 기존 컨벤션을 따를 것`,className:"w-full bg-input border border-border rounded-lg px-4 py-3 text-sm text-foreground resize-none focus:border-primary focus:outline-none leading-relaxed font-mono min-h-[300px]"})}),(0,L.jsxs)("div",{className:"flex items-center justify-between px-5 py-3 border-t border-border",children:[(0,L.jsx)("span",{className:"text-xs text-muted-foreground",children:"Cmd+Enter to save"}),(0,L.jsxs)("div",{className:"flex items-center gap-2",children:[(0,L.jsx)("button",{onClick:d,className:"px-3 py-1.5 text-xs text-muted-foreground hover:text-foreground border border-border rounded-md transition-colors",children:"Cancel"}),(0,L.jsx)("button",{onClick:()=>c(e),className:"px-3 py-1.5 text-xs bg-primary text-white rounded-md hover:bg-primary-hover transition-colors",children:"Save"})]})]})]})]}):null}let xv={success:{icon:"✅",color:"text-success"},error:{icon:"❌",color:"text-destructive"},"no-git":{icon:"➖",color:"text-muted-foreground"},"no-path":{icon:"➖",color:"text-muted-foreground"}};function xw({open:a,results:b,onClose:c}){let d=(0,M.useRef)(null);if(!a)return null;let e=b.filter(a=>"success"===a.status).length,f=b.filter(a=>"error"===a.status).length,g=b.filter(a=>"no-git"===a.status||"no-path"===a.status).length;return(0,L.jsx)("div",{ref:d,onClick:a=>{a.target===d.current&&c()},className:"fixed inset-0 z-50 flex items-center justify-center",style:{background:"rgba(0,0,0,0.5)",backdropFilter:"blur(2px)"},children:(0,L.jsxs)("div",{className:"bg-card border border-border rounded-xl shadow-2xl shadow-black/40 w-full max-w-md mx-4 animate-dialog-in",children:[(0,L.jsxs)("div",{className:"p-5 border-b border-border",children:[(0,L.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:"Git Sync Results"}),(0,L.jsxs)("p",{className:"text-xs text-muted-foreground mt-1",children:[e," synced, ",f," failed, ",g," skipped"]})]}),(0,L.jsx)("div",{className:"max-h-64 overflow-y-auto p-3 space-y-1.5",children:0===b.length?(0,L.jsx)("p",{className:"text-xs text-muted-foreground text-center py-4",children:"No projects with linked folders"}):b.map(a=>{let b=xv[a.status];return(0,L.jsxs)("div",{className:"flex items-start gap-2 p-2 rounded-lg bg-muted/50",children:[(0,L.jsx)("span",{className:"text-sm flex-shrink-0",children:b.icon}),(0,L.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,L.jsx)("div",{className:"text-xs font-medium truncate",children:a.projectName}),(0,L.jsx)("div",{className:`text-xs ${b.color} truncate`,title:a.message,children:a.message})]})]},a.projectId)})}),(0,L.jsx)("div",{className:"flex justify-end px-5 pb-4 pt-2",children:(0,L.jsx)("button",{onClick:c,className:"px-3 py-1.5 text-xs text-muted-foreground hover:text-foreground bg-muted hover:bg-card-hover border border-border rounded-md transition-colors",children:"Close"})})]})})}let xx={ts:"TS",tsx:"TX",js:"JS",jsx:"JX",json:"{}",md:"MD",css:"CS",scss:"SC",html:"HT",svg:"SV",png:"PN",jpg:"JP",py:"PY",go:"GO",rs:"RS",java:"JA",sql:"SQ",sh:"SH",yml:"YM",yaml:"YM",toml:"TM",xml:"XM",txt:"TX",env:"EN",lock:"LK",gitignore:"GI"};function xy({rootPath:a,onClose:b}){let[c,d]=(0,M.useState)({}),[e,f]=(0,M.useState)(new Set([a])),g=(0,M.useRef)(null),h=(0,M.useCallback)(async a=>{d(b=>({...b,[a]:{entries:[],loaded:!1,loading:!0}}));try{let b=await fetch(`/api/filesystem/tree?path=${encodeURIComponent(a)}`);if(!b.ok)throw Error("Failed to load");let c=await b.json();d(b=>({...b,[a]:{entries:c.entries,loaded:!0,loading:!1}}))}catch{d(b=>({...b,[a]:{entries:[],loaded:!0,loading:!1,error:"Failed to load"}}))}},[]),i=(a,b)=>{let d=c[a];return d?d.loading?(0,L.jsx)("div",{className:"flex items-center gap-2 py-1",style:{paddingLeft:16*b+12},children:(0,L.jsx)("span",{className:"text-xs text-muted-foreground animate-pulse",children:"Loading..."})}):d.error?(0,L.jsx)("div",{className:"flex items-center gap-2 py-1",style:{paddingLeft:16*b+12},children:(0,L.jsx)("span",{className:"text-xs text-destructive",children:d.error})}):0===d.entries.length?(0,L.jsx)("div",{className:"flex items-center gap-2 py-1",style:{paddingLeft:16*b+12},children:(0,L.jsx)("span",{className:"text-xs text-muted-foreground italic",children:"Empty"})}):d.entries.map(a=>{var d,g;let j="directory"===a.type,k=e.has(a.path);return(0,L.jsxs)("div",{children:[(0,L.jsx)("div",{className:`flex items-center gap-1.5 py-[3px] pr-3 cursor-pointer transition-colors hover:bg-card-hover group ${j?"text-foreground":"text-muted-foreground"}`,style:{paddingLeft:16*b+12},onClick:()=>{var b;return j&&(b=a.path,void f(a=>{let d=new Set(a);return d.has(b)?d.delete(b):(d.add(b),c[b]?.loaded||c[b]?.loading||h(b)),d}))},children:j?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)("span",{className:"w-4 text-center text-xs text-muted-foreground flex-shrink-0",children:k?"▼":"▶"}),(0,L.jsx)("span",{className:"text-sm flex-shrink-0",children:k?"\uD83D\uDCC2":"\uD83D\uDCC1"}),(0,L.jsx)("span",{className:"text-sm truncate flex-1 font-medium",children:a.name})]}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)("span",{className:"w-4 flex-shrink-0"}),(0,L.jsx)("span",{className:"text-[10px] font-mono w-5 text-center flex-shrink-0 text-muted-foreground/70",children:(d=a.extension)?xx[d]||d.slice(0,2).toUpperCase():"--"}),(0,L.jsx)("span",{className:"text-sm truncate flex-1",children:a.name}),void 0!==a.size&&(0,L.jsx)("span",{className:"text-[10px] text-muted-foreground/50 tabular-nums flex-shrink-0",children:(g=a.size)<1024?`${g}B`:g<1048576?`${(g/1024).toFixed(0)}K`:`${(g/1048576).toFixed(1)}M`})]})}),j&&k&&i(a.path,b+1)]},a.path)}):null},j=a.split(/[\\/]/).filter(Boolean).pop()||a;return(0,L.jsxs)("div",{ref:g,className:"fixed inset-0 z-50 flex justify-end",onClick:a=>{a.target===g.current&&b()},children:[(0,L.jsx)("div",{className:"absolute inset-0 bg-black/40 backdrop-blur-[2px]"}),(0,L.jsxs)("div",{className:"relative w-[420px] max-w-[85vw] h-full bg-card border-l border-border shadow-2xl flex flex-col animate-drawer-in",children:[(0,L.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border flex-shrink-0",children:[(0,L.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,L.jsx)("span",{className:"text-base",children:"\uD83D\uDCC2"}),(0,L.jsxs)("div",{className:"min-w-0",children:[(0,L.jsx)("h2",{className:"text-sm font-semibold truncate",children:j}),(0,L.jsx)("p",{className:"text-[10px] text-muted-foreground font-mono truncate",children:a})]})]}),(0,L.jsx)("button",{onClick:b,className:"text-muted-foreground hover:text-foreground transition-colors text-lg px-1",title:"Close (ESC)",children:"\xd7"})]}),(0,L.jsx)("div",{className:"flex-1 overflow-y-auto py-2",children:i(a,0)}),(0,L.jsx)("div",{className:"px-4 py-2 border-t border-border flex-shrink-0",children:(0,L.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"ESC to close"})})]})]})}function xz({open:a,projectId:b,onClose:c,onApplied:d}){let[e,f]=(0,M.useState)(!1),[g,h]=(0,M.useState)(!1),[i,j]=(0,M.useState)(null),[k,l]=(0,M.useState)([]),[m,n]=(0,M.useState)(new Set),o=async()=>{f(!0),j(null);try{let a=await fetch(`/api/projects/${b}/auto-distribute`,{method:"POST"}),c=await a.json();if(!a.ok){let a=c.raw?`
30
30
 
31
31
  AI 응답:
32
32
  ${c.raw}`:"";j((c.error||"Failed to get distribution")+a);return}l(c.distributions||[])}catch{j("AI 호출에 실패했습니다.")}finally{f(!1)}},p=async()=>{let a=k.filter(a=>a.tasks.length>0);if(0!==a.length){h(!0);try{let e=await fetch(`/api/projects/${b}/apply-distribute`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({distributions:a})});if(e.ok)d(),c();else{let a=await e.json();j(a.error||"Failed to apply")}}catch{j("적용에 실패했습니다.")}finally{h(!1)}}},q=k.reduce((a,b)=>a+b.tasks.length,0);return a?(0,L.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[(0,L.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:c}),(0,L.jsxs)("div",{className:"relative bg-card border border-border rounded-xl shadow-2xl w-[720px] max-h-[85vh] flex flex-col animate-dialog-in",children:[(0,L.jsxs)("div",{className:"flex items-center justify-between px-5 py-3 border-b border-border",children:[(0,L.jsxs)("div",{children:[(0,L.jsx)("h3",{className:"text-sm font-semibold",children:"Auto Distribute"}),(0,L.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"AI가 브레인스토밍을 분석하여 태스크를 분배합니다"})]}),(0,L.jsx)("button",{onClick:c,className:"text-muted-foreground hover:text-foreground text-lg px-1",children:"x"})]}),(0,L.jsxs)("div",{className:"flex-1 overflow-y-auto p-4",children:[e&&(0,L.jsxs)("div",{className:"flex flex-col items-center justify-center py-16 gap-3",children:[(0,L.jsx)("div",{className:"w-6 h-6 border-2 border-primary border-t-transparent rounded-full animate-spin"}),(0,L.jsx)("p",{className:"text-sm text-muted-foreground",children:"AI가 분석 중..."})]}),i&&(0,L.jsxs)("div",{className:"bg-danger/10 border border-danger/30 rounded-lg p-3 mb-3",children:[(0,L.jsx)("pre",{className:"text-xs text-danger whitespace-pre-wrap break-all max-h-[200px] overflow-y-auto",children:i}),(0,L.jsx)("button",{onClick:o,className:"text-xs text-accent hover:underline mt-1",children:"다시 시도"})]}),!e&&k.length>0&&(0,L.jsx)("div",{className:"space-y-3",children:k.map((a,b)=>(0,L.jsxs)("div",{className:"border border-border rounded-lg overflow-hidden",children:[(0,L.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 bg-muted/50",children:[(0,L.jsx)("button",{onClick:()=>{n(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},className:"text-xs text-muted-foreground hover:text-foreground w-4",children:m.has(b)?"▶":"▼"}),(0,L.jsx)("span",{className:`text-[10px] px-1.5 py-0.5 rounded font-medium ${a.is_new?"bg-success/15 text-success":"bg-accent/15 text-accent"}`,children:a.is_new?"NEW":"EXISTING"}),(0,L.jsx)("input",{value:a.sub_project_name,onChange:a=>{var c;return c=a.target.value,void l(a=>a.map((a,d)=>d===b?{...a,sub_project_name:c}:a))},className:"flex-1 bg-transparent text-sm font-medium text-foreground focus:outline-none border-b border-transparent focus:border-primary"}),(0,L.jsx)("span",{className:"text-xs text-muted-foreground tabular-nums",children:a.tasks.length}),(0,L.jsx)("button",{onClick:()=>{l(a=>a.filter((a,c)=>c!==b))},className:"text-xs text-muted-foreground hover:text-danger px-1",title:"Remove group",children:"x"})]}),!m.has(b)&&(0,L.jsxs)("div",{className:"divide-y divide-border",children:[a.tasks.map((a,c)=>{var d;return(0,L.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 group hover:bg-muted/30",children:[(d=a.priority,(0,L.jsx)("span",{className:`inline-block w-2 h-2 rounded-full ${{high:"bg-danger",medium:"bg-warning",low:"bg-muted-foreground/40"}[d]}`})),(0,L.jsx)("input",{value:a.title,onChange:a=>{var d;return d=a.target.value,void l(a=>a.map((a,e)=>e===b?{...a,tasks:a.tasks.map((a,b)=>b===c?{...a,title:d}:a)}:a))},className:"flex-1 bg-transparent text-xs text-foreground focus:outline-none border-b border-transparent focus:border-primary"}),(0,L.jsxs)("select",{value:a.priority,onChange:a=>{var d;return d=a.target.value,void l(a=>a.map((a,e)=>e===b?{...a,tasks:a.tasks.map((a,b)=>b===c?{...a,priority:d}:a)}:a))},className:"text-[10px] bg-transparent text-muted-foreground cursor-pointer hover:text-foreground opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,L.jsx)("option",{value:"high",children:"high"}),(0,L.jsx)("option",{value:"medium",children:"medium"}),(0,L.jsx)("option",{value:"low",children:"low"})]}),k.length>1&&(0,L.jsxs)("select",{value:"",onChange:a=>{let d=parseInt(a.target.value);isNaN(d)||l(a=>{let e=a[b].tasks[c];return a.map((a,f)=>f===b?{...a,tasks:a.tasks.filter((a,b)=>b!==c)}:f===d?{...a,tasks:[...a.tasks,e]}:a)})},className:"text-[10px] bg-transparent text-muted-foreground cursor-pointer hover:text-foreground opacity-0 group-hover:opacity-100 transition-opacity",title:"Move to...",children:[(0,L.jsx)("option",{value:"",children:"Move"}),k.map((a,c)=>c!==b&&(0,L.jsx)("option",{value:c,children:a.sub_project_name},c))]}),(0,L.jsx)("button",{onClick:()=>{l(a=>a.map((a,d)=>d===b?{...a,tasks:a.tasks.filter((a,b)=>b!==c)}:a))},className:"text-xs text-muted-foreground hover:text-danger opacity-0 group-hover:opacity-100 transition-opacity px-0.5",children:"x"})]},c)}),0===a.tasks.length&&(0,L.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground italic",children:"No tasks (this group will be skipped)"})]})]},b))}),!e&&!i&&0===k.length&&(0,L.jsx)("div",{className:"text-center py-16 text-sm text-muted-foreground",children:"No distribution available"})]}),(0,L.jsxs)("div",{className:"flex items-center justify-between px-5 py-3 border-t border-border",children:[(0,L.jsx)("span",{className:"text-xs text-muted-foreground",children:k.length>0&&`${k.length} projects, ${q} tasks`}),(0,L.jsxs)("div",{className:"flex items-center gap-2",children:[!e&&k.length>0&&(0,L.jsx)("button",{onClick:o,className:"px-3 py-1.5 text-xs text-muted-foreground hover:text-foreground border border-border rounded-md transition-colors",children:"Retry"}),(0,L.jsx)("button",{onClick:c,className:"px-3 py-1.5 text-xs text-muted-foreground hover:text-foreground border border-border rounded-md transition-colors",children:"Cancel"}),(0,L.jsx)("button",{onClick:p,disabled:g||e||0===q,className:"px-4 py-1.5 text-xs bg-primary text-white rounded-md hover:bg-primary-hover transition-colors disabled:opacity-50",children:g?"Applying...":`Apply (${q})`})]})]})]})]}):null}let xA=/```action\s*\n([\s\S]*?)```/g;function xB(a){return a&&"object"==typeof a?"create_task"===a.type?"string"!=typeof a.subProjectId||"string"!=typeof a.title?null:{type:"create_task",subProjectId:a.subProjectId,projectId:"string"==typeof a.projectId?a.projectId:void 0,title:a.title,description:"string"==typeof a.description?a.description:void 0,priority:["high","medium","low"].includes(a.priority)?a.priority:void 0,status:"string"==typeof a.status?a.status:void 0}:"update_task"===a.type?"string"==typeof a.taskId&&a.changes&&"object"==typeof a.changes?{type:"update_task",taskId:a.taskId,changes:a.changes}:null:null:null}function xC({action:a}){return(0,L.jsxs)("div",{className:"flex items-center gap-2",children:[(0,L.jsx)("span",{className:"text-success text-xs font-bold",children:"+"}),(0,L.jsx)("span",{className:"text-xs text-foreground truncate flex-1",children:a.title}),a.priority&&"medium"!==a.priority&&(0,L.jsx)("span",{className:`text-[10px] px-1 rounded ${"high"===a.priority?"bg-destructive/20 text-destructive":"bg-muted text-muted-foreground"}`,children:a.priority})]})}function xD({action:a}){let b=Object.entries(a.changes).filter(([,a])=>void 0!==a).map(([a,b])=>`${a}: ${b}`).join(", ");return(0,L.jsxs)("div",{className:"flex items-center gap-2",children:[(0,L.jsx)("span",{className:"text-warning text-xs font-bold",children:"~"}),(0,L.jsxs)("span",{className:"text-xs text-muted-foreground truncate",children:["task:",a.taskId.slice(0,8)]}),(0,L.jsxs)("span",{className:"text-xs text-foreground truncate flex-1",children:["→ ",b]})]})}function xE({actions:a,onApplied:b}){let[c,d]=(0,M.useState)("pending"),[e,f]=(0,M.useState)(null),[g,h]=(0,M.useState)(null),i=(0,M.useCallback)(async()=>{d("applying"),f(null);try{let c=await fetch("/api/advisor-actions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({actions:a})}),e=await c.json();if(!c.ok)throw Error(e.error||`HTTP ${c.status}`);let f=e.results,g=f.filter(a=>a.success).length,i=f.filter(a=>!a.success).length;i>0?(h(`${g} 성공, ${i} 실패`),d(g>0?"applied":"error")):(h(`${g}개 적용 완료`),d("applied")),b?.(),window.dispatchEvent(new Event("advisor-action-applied"))}catch(a){f(a instanceof Error?a.message:"적용 실패"),d("error")}},[a,b]),j=a.filter(a=>"create_task"===a.type).length,k=a.filter(a=>"update_task"===a.type).length;return(0,L.jsxs)("div",{className:`my-2 border rounded-lg text-xs ${"applied"===c?"border-success/30 bg-success/5":"error"===c?"border-destructive/30 bg-destructive/5":"border-border bg-card"}`,children:[(0,L.jsxs)("div",{className:"px-3 py-2 border-b border-border flex items-center justify-between",children:[(0,L.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,L.jsx)("span",{children:"Proposed Actions"}),j>0&&(0,L.jsxs)("span",{className:"text-success",children:["+",j," create"]}),k>0&&(0,L.jsxs)("span",{className:"text-warning",children:["~",k," update"]})]}),"applied"===c&&(0,L.jsxs)("span",{className:"text-success",children:["✓ ",g]}),"error"===c&&(0,L.jsxs)("span",{className:"text-destructive",children:["⚠ ",e||g]})]}),(0,L.jsx)("div",{className:"px-3 py-2 space-y-1.5 max-h-[200px] overflow-y-auto",children:a.map((a,b)=>(0,L.jsx)("div",{children:"create_task"===a.type?(0,L.jsx)(xC,{action:a}):(0,L.jsx)(xD,{action:a})},b))}),"applied"!==c&&(0,L.jsxs)("div",{className:"px-3 py-2 border-t border-border flex justify-end gap-2",children:["error"===c&&(0,L.jsx)("button",{onClick:i,className:"px-2 py-1 text-foreground hover:text-primary transition-colors",children:"재시도"}),"pending"===c&&(0,L.jsx)("button",{onClick:i,className:"px-3 py-1 bg-primary text-primary-foreground rounded hover:opacity-90 transition-opacity",children:"적용"}),"applying"===c&&(0,L.jsxs)("span",{className:"flex items-center gap-1.5 text-muted-foreground",children:[(0,L.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full bg-warning animate-pulse"}),"적용 중…"]})]})]})}function xF({basePath:a,title:b,shortcutHint:c,placeholder:d,emptyIcon:e,emptyHints:f,activityType:g,activityLabel:h,onClose:i}){let[j,k]=(0,M.useState)([]),[l,m]=(0,M.useState)(""),[n,o]=(0,M.useState)(!1),p=(0,M.useRef)(null),q=(0,M.useRef)(null);(0,M.useCallback)(async()=>{try{let b=await fetch(a);if(!b.ok)return;let c=await b.json();Array.isArray(c)&&k(c)}catch{}},[a]);let r=(0,M.useCallback)(async()=>{let b=l.trim();if(!b||n)return;m(""),o(!0);let c=`${g}-${Date.now()}`;ae({id:c,type:g,label:h,startedAt:Date.now()});let d=`temp-${Date.now()}`;k(a=>[...a,{id:d,project_id:"",role:"user",content:b,created_at:new Date().toISOString()}]);try{let c=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:b})});if(c.ok){let a=await c.json();k(b=>[...b.filter(a=>a.id!==d),a.userMessage,a.aiMessage])}}catch{}af(c),o(!1),q.current?.focus()},[l,n,a,g,h]),s=(0,M.useCallback)(async()=>{await fetch(a,{method:"DELETE"}),k([]),q.current?.focus()},[a]);return(0,L.jsxs)("div",{className:"fixed inset-0 z-[55] flex items-center justify-center",onClick:i,children:[(0,L.jsx)("div",{className:"absolute inset-0 bg-black/40",style:{backdropFilter:"blur(2px)"}}),(0,L.jsxs)("div",{onClick:a=>a.stopPropagation(),className:"relative w-[560px] max-w-[90vw] h-[80vh] max-h-[700px] bg-card border border-border rounded-xl shadow-2xl flex flex-col animate-dialog-in",children:[(0,L.jsxs)("div",{className:"px-4 py-3 border-b border-border flex items-center justify-between flex-shrink-0",children:[(0,L.jsxs)("div",{className:"flex items-center gap-2",children:[(0,L.jsx)("span",{className:"text-sm font-semibold text-foreground",children:b}),(0,L.jsx)("span",{className:"text-[10px] text-muted-foreground/60",children:c})]}),(0,L.jsxs)("div",{className:"flex items-center gap-2",children:[j.length>0&&(0,L.jsx)("button",{onClick:s,className:"text-xs text-muted-foreground hover:text-foreground transition-colors px-1",children:"Clear"}),(0,L.jsx)("button",{onClick:i,className:"text-muted-foreground hover:text-foreground transition-colors text-lg leading-none",children:"\xd7"})]})]}),(0,L.jsxs)("div",{className:"flex-1 overflow-y-auto px-4 py-3 space-y-3 min-h-0",children:[0===j.length&&!n&&(0,L.jsxs)("div",{className:"flex flex-col items-center justify-center h-full text-center gap-3 text-muted-foreground",children:[(0,L.jsx)("div",{className:"text-2xl",children:e}),f.map((a,b)=>(0,L.jsx)("div",{className:0===b?"text-sm":"text-xs text-muted-foreground/70 max-w-[300px] leading-relaxed",children:a},b))]}),j.filter(a=>"system"!==a.role).map(a=>(0,L.jsx)("div",{className:`flex flex-col ${"user"===a.role?"items-end":"items-start"}`,children:"user"===a.role?(0,L.jsx)("div",{className:"max-w-[92%] px-3 py-2 rounded-lg text-sm leading-relaxed bg-accent text-white rounded-br-sm whitespace-pre-wrap",children:a.content}):(0,L.jsx)("div",{className:"max-w-[92%] w-full",children:(function(a){let b=[],c=0;for(let d of a.matchAll(xA)){let e=a.slice(c,d.index);e.trim()&&b.push({type:"markdown",text:e});try{let a=JSON.parse(d[1]),c=(Array.isArray(a)?a:[a]).map(xB).filter(a=>null!==a);c.length>0?b.push({type:"actions",actions:c}):b.push({type:"markdown",text:d[0]})}catch{b.push({type:"markdown",text:d[0]})}c=(d.index??0)+d[0].length}let d=a.slice(c);return d.trim()&&b.push({type:"markdown",text:d}),{segments:b}})(a.content).segments.map((a,b)=>"markdown"===a.type?(0,L.jsx)("div",{className:"px-3 py-2 rounded-lg bg-muted text-foreground rounded-bl-sm chat-markdown text-sm leading-relaxed",children:(0,L.jsx)(we,{remarkPlugins:[xp],children:a.text})},b):(0,L.jsx)(xE,{actions:a.actions},b))})},a.id)),n&&(0,L.jsx)("div",{className:"flex items-start",children:(0,L.jsx)("div",{className:"px-3 py-2 rounded-lg bg-muted text-foreground rounded-bl-sm",children:(0,L.jsxs)("div",{className:"flex gap-1",children:[(0,L.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-muted-foreground animate-bounce",style:{animationDelay:"0ms"}}),(0,L.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-muted-foreground animate-bounce",style:{animationDelay:"150ms"}}),(0,L.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-muted-foreground animate-bounce",style:{animationDelay:"300ms"}})]})})}),(0,L.jsx)("div",{ref:p})]}),(0,L.jsxs)("div",{className:"flex gap-1.5 px-3 py-3 border-t border-border flex-shrink-0",children:[(0,L.jsx)("textarea",{ref:q,value:l,onChange:a=>m(a.target.value),onKeyDown:a=>{"Enter"!==a.key||a.shiftKey||(a.preventDefault(),r())},placeholder:d,rows:2,className:"flex-1 bg-input border border-border rounded-md px-3 py-2 text-sm text-foreground resize-none focus:border-primary focus:outline-none"}),(0,L.jsx)("button",{onClick:r,disabled:!l.trim()||n,className:"px-3 py-2 bg-accent text-white text-sm rounded-md disabled:opacity-40 hover:bg-accent/80 transition-colors flex-shrink-0 self-end",children:"Send"})]})]})]})}function xG({projectId:a,projectName:b,onClose:c}){return(0,L.jsx)(xF,{basePath:`/api/projects/${a}/advisor`,title:"Project Advisor",shortcutHint:"⌘L",placeholder:"프로젝트에 대해 무엇이든 물어보세요…",emptyIcon:"\uD83E\uDDED",emptyHints:["프로젝트 전체 맥락을 보고 답합니다",'"다음 뭐부터 하면 좋겠어?"\n"빠진 작업 없나?"\n"이번 주 진행 상황 정리해줘"'],activityType:"project-advisor",activityLabel:b?`Advisor: ${b}`:"Project Advisor",onClose:c})}function xH({id:a,initialSubId:b,initialTaskId:c}){let{state:d,setActiveTab:e,consumeInitial:f,updateTabName:g}=U();d.activeTabId,(0,M.useRef)(b),(0,M.useRef)(c);let[h,i]=(0,M.useState)(null),[j,k]=(0,M.useState)([]),[l,m]=(0,M.useState)(null),[n,o]=(0,M.useState)([]),[p,q]=(0,M.useState)(null),[r,s]=(0,M.useState)(!1),[t,u]=(0,M.useState)(null),[v,w]=(0,M.useState)(!1),[x,y]=(0,M.useState)(!0),[z,A]=(0,M.useState)(""),[B,C]=(0,M.useState)(!1),[D,E]=(0,M.useState)(!1),[F,G]=(0,M.useState)(!1),[H,I]=(0,M.useState)(!1),[J,K]=(0,M.useState)(null),[N,O]=(0,M.useState)(null),[P,Q]=(0,M.useState)(!1),[R,S]=(0,M.useState)(!1),[T,V]=(0,M.useState)({}),[W,X]=(0,M.useState)(null),Y=(0,M.useRef)(!1),[Z,$]=(0,M.useState)(500),[_,aa]=(0,M.useState)(500),ab=(0,M.useRef)(null),ac=(0,M.useRef)(null),ad=(0,M.useRef)(0),ae=(0,M.useRef)(0),af=(0,M.useCallback)((a,b)=>{b.preventDefault(),ac.current=a,ad.current=b.clientX,ae.current="left"===a?Z:_},[Z,_]),ag=(0,M.useCallback)(async()=>{let b=await fetch(`/api/projects/${a}/sub-projects`);if(!b.ok)return;let c=await b.json();return k(c),c},[a]),ah=n.find(a=>a.id===p)??null,ai=async()=>{if(!z.trim())return;let b=await fetch(`/api/projects/${a}/sub-projects`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:z.trim()})});if(b.ok){let a=await b.json();A(""),w(!1),await ag(),m(a.id)}},aj=async b=>{if(!l)return;let c=await fetch(`/api/projects/${a}/sub-projects/${l}/tasks`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:b})});if(c.ok){let a=await c.json();o(b=>[...b,a]),q(a.id),ag()}},ak=async(b,c)=>{let d=await fetch(`/api/projects/${a}/sub-projects/${l}/tasks/${b}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:c})});if(d.ok){let a=await d.json();o(c=>c.map(c=>c.id===b?a:c)),ag()}},an=async(b,c)=>{let d=await fetch(`/api/projects/${a}/sub-projects/${l}/tasks/${b}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({is_today:c})});if(d.ok){let a=await d.json();o(c=>c.map(c=>c.id===b?a:c))}},ao=async b=>{if(!p||!l)return;let c=await fetch(`/api/projects/${a}/sub-projects/${l}/tasks/${p}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(c.ok){let a=await c.json();o(b=>b.map(b=>b.id===p?a:b)),ag()}},ap=async b=>{k(a=>{let c=new Map(a.map(a=>[a.id,a]));return b.map(a=>c.get(a)).filter(Boolean)}),await fetch(`/api/projects/${a}/sub-projects`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({orderedIds:b})})},aq=async b=>{let c=b||p;if(!c||!l)return;let d=n.find(a=>a.id===c);if(!d)return;await fetch(`/api/projects/${a}/sub-projects/${l}/tasks/${c}?mode=archive`,{method:"DELETE"}),o(a=>a.filter(a=>a.id!==c)),p===c&&q(null),ag(),W?.timer&&clearTimeout(W.timer);let e=setTimeout(()=>X(null),3e4);X({taskId:c,title:d.title,timer:e})},ar=async()=>{if(W){if(clearTimeout(W.timer),await fetch(`/api/archive?action=restore&taskId=${W.taskId}`,{method:"POST"}),l){let b=await fetch(`/api/projects/${a}/sub-projects/${l}/tasks`);b.ok&&o(await b.json())}ag(),X(null)}},as=async b=>{t&&("delete-sub"===t.type?(await fetch(`/api/projects/${a}/sub-projects/${t.id}`,{method:"DELETE"}),l===t.id&&(m(null),q(null)),ag()):"delete-task"===t.type&&(await fetch(`/api/projects/${a}/sub-projects/${l}/tasks/${t.id}?mode=${b||"archive"}`,{method:"DELETE"}),o(a=>a.filter(a=>a.id!==t.id)),p===t.id&&q(null),ag()),u(null))},at=async b=>{let c=await fetch(`/api/projects/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({project_path:b})});c.ok&&(i(await c.json()),s(!1))},au=async b=>{let c=await fetch(`/api/projects/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({ai_context:b})});c.ok&&(i(await c.json()),C(!1))},av=(0,M.useCallback)(async(b=!1)=>{if(!Y.current){Y.current=!0,b||I(!0);try{let c=await fetch(`/api/projects/${a}/git-sync`,{method:"POST"});if(c.ok){let a=await c.json();O(new Date),b||K(a)}}catch{}finally{Y.current=!1,b||I(!1)}}},[a]),aw=async()=>{if(!h)return;let b=await fetch(`/api/projects/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({watch_enabled:!h.watch_enabled})});b.ok&&i(await b.json())};return h?(0,L.jsxs)("div",{className:"flex flex-col h-full",children:[(0,L.jsxs)("header",{className:"flex items-center justify-between px-4 py-2 border-b border-border bg-card flex-shrink-0",children:[(0,L.jsxs)("div",{className:"flex items-center gap-3",children:[(0,L.jsx)("button",{onClick:()=>e("dashboard"),className:"text-muted-foreground hover:text-foreground hover:bg-muted transition-colors text-sm px-2 py-1 rounded-md",children:"← Back"}),(0,L.jsx)("span",{className:"text-border",children:"|"}),(0,L.jsx)("h1",{className:"text-sm font-semibold",children:h.name}),h.project_path&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)("span",{className:"text-xs text-muted-foreground font-mono truncate max-w-48",title:h.project_path,children:h.project_path}),(0,L.jsx)("button",{onClick:()=>Q(!0),className:"text-xs text-muted-foreground hover:text-foreground hover:bg-muted transition-colors px-1.5 py-0.5 rounded",title:"View file tree",children:"\uD83D\uDCC2"})]})]}),(0,L.jsxs)("div",{className:"flex items-center gap-2",children:[(0,L.jsxs)("select",{value:h.agent_type||"claude",onChange:async b=>{let c=await fetch(`/api/projects/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent_type:b.target.value})});c.ok&&i(await c.json())},className:"px-2 py-1.5 text-xs bg-muted border border-border rounded-md text-foreground cursor-pointer hover:bg-card-hover transition-colors",title:"AI Agent",children:[(0,L.jsx)("option",{value:"claude",children:"Claude"}),(0,L.jsx)("option",{value:"gemini",children:"Gemini"}),(0,L.jsx)("option",{value:"codex",children:"Codex"})]}),(0,L.jsxs)("button",{onClick:aw,className:`px-3 py-1.5 text-xs border rounded-md transition-colors flex items-center gap-1.5 ${h.watch_enabled?"bg-success/15 text-success border-success/30 hover:bg-success/25":"bg-muted hover:bg-card-hover text-muted-foreground border-border"}`,title:h.watch_enabled?"Watch ON":"Watch OFF",children:[(0,L.jsx)("span",{className:`inline-block w-2 h-2 rounded-full ${h.watch_enabled?"bg-success animate-pulse":"bg-muted-foreground/40"}`}),"Watch"]}),(0,L.jsxs)("button",{onClick:()=>C(!0),className:`px-3 py-1.5 text-xs border rounded-md transition-colors ${h.ai_context?"bg-accent/15 text-accent border-accent/30 hover:bg-accent/25":"bg-muted hover:bg-card-hover text-muted-foreground border-border"}`,children:["AI Policy",h.ai_context?" *":""]}),(0,L.jsx)("button",{onClick:()=>E(!0),className:`px-3 py-1.5 text-xs border rounded-md transition-colors ${D?"bg-primary/15 text-primary border-primary/30":"bg-muted hover:bg-card-hover text-muted-foreground border-border"}`,title:"프로젝트 어드바이저 (⌘L)",children:"Advisor"}),h.project_path?(0,L.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,L.jsxs)("button",{onClick:()=>av(!1),disabled:H,className:"px-3 py-1.5 text-xs bg-muted hover:bg-card-hover text-foreground border border-border rounded-md transition-colors disabled:opacity-50 flex items-center gap-1.5",title:N?`Last sync: ${N.toLocaleTimeString()}`:"Git pull",children:[(0,L.jsx)("span",{className:H?"animate-spin":"",children:"↻"}),H?"Syncing...":"Git Sync"]}),N&&(0,L.jsx)("span",{className:"text-xs text-muted-foreground",children:N.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})})]}):(0,L.jsx)("button",{onClick:()=>s(!0),className:"px-3 py-1.5 text-xs bg-muted hover:bg-card-hover text-foreground border border-border rounded-md transition-colors",children:"Link folder"})]})]}),(0,L.jsxs)("div",{ref:ab,className:"flex-1 flex overflow-hidden",children:[x?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)("div",{style:{width:Z},className:"border-r border-border flex flex-col flex-shrink-0",children:(0,L.jsx)(qY,{projectId:a,onCollapse:()=>y(!1)})}),(0,L.jsx)("div",{className:"panel-resize-handle",onMouseDown:a=>af("left",a),children:(0,L.jsx)("div",{className:"panel-resize-handle-bar"})})]}):(0,L.jsx)("button",{onClick:()=>y(!0),className:"w-8 border-r border-border flex-shrink-0 flex items-center justify-center text-muted-foreground hover:text-foreground hover:bg-card-hover transition-colors text-xs",title:"Show brainstorming (B)",style:{writingMode:"vertical-rl"},children:"Brainstorm"}),(0,L.jsxs)("div",{style:{width:_},className:"border-r border-border flex flex-col flex-shrink-0",children:[v&&(0,L.jsx)("div",{className:"px-3 py-2 border-b border-border",children:(0,L.jsx)("input",{type:"text",value:z,onChange:a=>A(a.target.value),onKeyDown:a=>{"Enter"===a.key&&ai(),"Escape"===a.key&&(A(""),w(!1))},placeholder:"Project name...",className:"w-full bg-input border border-border rounded px-2 py-1 text-xs focus:border-primary focus:outline-none text-foreground",autoFocus:!0})}),(0,L.jsx)(sX,{subProjects:j,tasks:n,selectedSubId:l,selectedTaskId:p,onSelectSub:a=>{m(a),q(null)},onSelectTask:a=>{q(a),V(b=>{if("done"!==b[a])return b;let c={...b};return delete c[a],c})},onCreateSub:()=>w(!0),onDeleteSub:a=>{u({type:"delete-sub",id:a})},onRenameSub:async(b,c)=>{(await fetch(`/api/projects/${a}/sub-projects/${b}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:c})})).ok&&ag()},onCreateTask:aj,onStatusChange:ak,onTodayToggle:an,onDeleteTask:aq,onReorderSubs:ap,onReorderTasks:async b=>{l&&(o(a=>{let c=new Map(a.map(a=>[a.id,a]));return b.map(a=>c.get(a)).filter(Boolean)}),await fetch(`/api/projects/${a}/sub-projects/${l}/tasks/reorder`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({orderedIds:b})}))},onAutoDistribute:()=>S(!0),chatStates:T})]}),(0,L.jsx)("div",{className:"panel-resize-handle",onMouseDown:a=>af("center",a),children:(0,L.jsx)("div",{className:"panel-resize-handle-bar"})}),(0,L.jsx)("div",{className:"flex-1 min-w-0",children:ah?(0,L.jsx)(xt,{task:ah,projectId:a,subProjectId:l,siblingTasks:n,onUpdate:ao,onDelete:aq,focusMode:F,onFocusModeChange:G,onTaskPromoted:a=>o(b=>[...b,a]),onTaskMoved:()=>{o(a=>a.filter(a=>a.id!==p)),q(null)},onChatStateChange:(a,b)=>{V(c=>({...c,[a]:b}))}}):(0,L.jsx)("div",{className:"flex items-center justify-center h-full text-muted-foreground text-sm",children:n.length>0?"Select a task":l?"Create a task to get started":"Select a project"})})]}),r&&(0,L.jsx)(al,{onSelect:at,onCancel:()=>s(!1),initialPath:h.project_path||void 0}),(0,L.jsx)(am,{open:t?.type==="delete-sub",title:"Delete project?",description:"This will delete the project and all its tasks.",confirmLabel:"Delete",variant:"danger",onConfirm:()=>as(),onCancel:()=>u(null)}),t?.type==="delete-task"&&(0,L.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center",style:{background:"rgba(0,0,0,0.5)",backdropFilter:"blur(2px)"},children:(0,L.jsxs)("div",{className:"bg-card border border-border rounded-xl shadow-2xl shadow-black/40 w-full max-w-sm mx-4 animate-dialog-in",children:[(0,L.jsxs)("div",{className:"p-5",children:[(0,L.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:"Remove task"}),(0,L.jsx)("p",{className:"text-xs text-muted-foreground mt-1.5 leading-relaxed",children:"보관함에 넣으면 나중에 복원하거나 프롬프트를 참고할 수 있습니다."})]}),(0,L.jsxs)("div",{className:"flex justify-end gap-2 px-5 pb-4",children:[(0,L.jsx)("button",{onClick:()=>u(null),className:"px-3 py-1.5 text-xs text-muted-foreground hover:text-foreground bg-muted hover:bg-card-hover border border-border rounded-md transition-colors",children:"Cancel"}),(0,L.jsx)("button",{onClick:()=>as("permanent"),className:"px-3 py-1.5 text-xs text-white bg-destructive hover:bg-destructive/80 rounded-md transition-colors",children:"Delete"}),(0,L.jsx)("button",{onClick:()=>as("archive"),className:"px-3 py-1.5 text-xs text-white bg-primary hover:bg-primary-hover rounded-md transition-colors",children:"Archive"})]})]})}),(0,L.jsx)(xu,{open:B,content:h.ai_context||"",onSave:au,onClose:()=>C(!1)}),(0,L.jsx)(xw,{open:!!J,results:J||[],onClose:()=>K(null)}),P&&h.project_path&&(0,L.jsx)(xy,{rootPath:h.project_path,onClose:()=>Q(!1)}),(0,L.jsx)(xz,{open:R,projectId:a,onClose:()=>S(!1),onApplied:()=>{ag()}}),D&&(0,L.jsx)(xG,{projectId:a,projectName:h.name,onClose:()=>E(!1)}),W&&(0,L.jsxs)("div",{className:"fixed bottom-4 left-1/2 -translate-x-1/2 z-50 bg-card border border-border rounded-lg shadow-xl px-4 py-2.5 flex items-center gap-3 animate-dialog-in",children:[(0,L.jsxs)("span",{className:"text-xs text-muted-foreground truncate max-w-[200px]",children:['"',W.title,'" 삭제됨']}),(0,L.jsx)("button",{onClick:ar,className:"text-xs px-2 py-1 bg-primary text-primary-foreground rounded hover:opacity-90 transition-opacity",children:"되돌리기"}),(0,L.jsx)("button",{onClick:()=>{clearTimeout(W.timer),X(null)},className:"text-xs text-muted-foreground hover:text-foreground",children:"\xd7"})]})]}):(0,L.jsx)("div",{className:"flex-1 flex items-center justify-center text-muted-foreground",children:"Loading..."})}function xI(){let[a,b]=(0,M.useState)(!1),[c,d]=(0,M.useState)(""),[e,f]=(0,M.useState)([]),[g,h]=(0,M.useState)(0),[i,j]=(0,M.useState)(!1),k=(0,M.useRef)(null),{openProject:l}=U();(0,M.useRef)(null);let m=(0,M.useCallback)(a=>{l(a.projectId,a.projectName,a.subProjectId,a.taskId),b(!1)},[l]);return a?(0,L.jsx)("div",{onClick:()=>b(!1),className:"fixed inset-0 z-[60] flex items-start justify-center pt-[14vh]",style:{background:"rgba(0,0,0,0.5)",backdropFilter:"blur(3px)"},children:(0,L.jsxs)("div",{onClick:a=>a.stopPropagation(),className:"bg-card border border-border rounded-xl shadow-2xl w-full max-w-xl animate-dialog-in",children:[(0,L.jsxs)("div",{className:"px-4 py-3 border-b border-border flex items-center gap-2",children:[(0,L.jsx)("span",{className:"text-muted-foreground",children:"\uD83D\uDD0E"}),(0,L.jsx)("input",{ref:k,value:c,onChange:a=>d(a.target.value),onKeyDown:a=>{if("Escape"===a.key)return void b(!1);if("ArrowDown"===a.key){a.preventDefault(),h(a=>Math.min(a+1,e.length-1));return}if("ArrowUp"===a.key){a.preventDefault(),h(a=>Math.max(a-1,0));return}if("Enter"===a.key){a.preventDefault();let b=e[g];b&&m(b)}},placeholder:"태스크 \xb7 프로젝트 \xb7 워크스페이스 검색… (⌘P)",className:"flex-1 bg-transparent text-sm text-foreground focus:outline-none"}),(0,L.jsx)("span",{className:"text-[10px] text-muted-foreground/70 px-1.5 py-0.5 border border-border rounded",children:"↑↓ \xb7 ↵ \xb7 Esc"})]}),(0,L.jsxs)("div",{className:"max-h-[55vh] overflow-y-auto",children:[i&&(0,L.jsx)("div",{className:"px-4 py-6 text-xs text-muted-foreground",children:"검색 중…"}),!i&&c.trim()&&0===e.length&&(0,L.jsx)("div",{className:"px-4 py-6 text-xs text-muted-foreground",children:"일치하는 항목 없음"}),!i&&!c.trim()&&(0,L.jsx)("div",{className:"px-4 py-6 text-xs text-muted-foreground",children:"무엇을 찾으시나요? 태스크 제목\xb7본문, 프로젝트\xb7워크스페이스 이름을 검색합니다."}),(0,L.jsx)("ul",{children:e.map((a,b)=>(0,L.jsxs)("li",{onMouseEnter:()=>h(b),onClick:()=>m(a),className:`px-4 py-2.5 cursor-pointer border-l-2 ${b===g?"bg-muted border-primary":"border-transparent"}`,children:[(0,L.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,L.jsx)("span",{className:`px-1.5 py-0.5 rounded text-[10px] uppercase tracking-wide ${"task"===a.type?"bg-primary/15 text-primary":"project"===a.type?"bg-accent/15 text-accent":"bg-warning/15 text-warning"}`,children:"sub-project"===a.type?"project":a.type}),(0,L.jsx)("span",{children:a.projectName}),a.subProjectName&&"task"===a.type&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)("span",{className:"opacity-50",children:"›"}),(0,L.jsx)("span",{children:a.subProjectName})]}),a.isArchived&&(0,L.jsx)("span",{className:"text-muted-foreground/70 italic",children:"(archived)"})]}),(0,L.jsx)("div",{className:"text-sm text-foreground mt-0.5 truncate",children:a.title}),a.snippet&&(0,L.jsx)("div",{className:"text-xs text-muted-foreground/80 mt-0.5 truncate",children:a.snippet})]},`${a.type}-${a.taskId??a.subProjectId??a.projectId}`))})]})]})}):null}function xJ(){let[a,b]=(0,M.useState)(!1),[c,d]=(0,M.useState)([]),[e,f]=(0,M.useState)(""),[g,h]=(0,M.useState)(""),[i,j]=(0,M.useState)(""),[k,l]=(0,M.useState)(!1),[m,n]=(0,M.useState)(null),o=(0,M.useRef)(null),{openProject:p}=U(),q=async()=>{let a=i.trim();if(a&&e&&g&&!k){l(!0),n(null);try{let d=await fetch(`/api/projects/${e}/sub-projects/${g}/tasks`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:a})});if(!d.ok)throw Error(`HTTP ${d.status}`);let f=await d.json();try{localStorage.setItem("im-quick-capture-last-dest",JSON.stringify({projectId:e,subProjectId:g}))}catch{}let h=c.find(a=>a.id===e);h&&p(h.id,h.name,g,f.id),b(!1)}catch(a){n(a instanceof Error?a.message:"생성 실패"),l(!1)}}};if(!a)return null;let r=c.find(a=>a.id===e),s=r?.subProjects??[];return(0,L.jsx)("div",{onClick:()=>b(!1),className:"fixed inset-0 z-[60] flex items-start justify-center pt-[16vh]",style:{background:"rgba(0,0,0,0.5)",backdropFilter:"blur(3px)"},children:(0,L.jsxs)("div",{onClick:a=>a.stopPropagation(),className:"bg-card border border-border rounded-xl shadow-2xl w-full max-w-md animate-dialog-in p-4 flex flex-col gap-3",children:[(0,L.jsxs)("div",{className:"flex items-center justify-between",children:[(0,L.jsx)("div",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wider",children:"빠른 태스크 캡처"}),(0,L.jsx)("span",{className:"text-[10px] text-muted-foreground/70 px-1.5 py-0.5 border border-border rounded",children:"⌘N \xb7 Esc"})]}),(0,L.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,L.jsx)("select",{value:e,onChange:a=>f(a.target.value),className:"bg-input border border-border rounded-md px-2 py-1.5 text-sm text-foreground focus:border-primary focus:outline-none",children:c.map(a=>(0,L.jsx)("option",{value:a.id,children:a.name},a.id))}),(0,L.jsx)("select",{value:g,onChange:a=>h(a.target.value),disabled:!s.length,className:"bg-input border border-border rounded-md px-2 py-1.5 text-sm text-foreground focus:border-primary focus:outline-none disabled:opacity-50",children:0===s.length?(0,L.jsx)("option",{value:"",children:"프로젝트 없음"}):s.map(a=>(0,L.jsx)("option",{value:a.id,children:a.name},a.id))})]}),(0,L.jsx)("input",{ref:o,value:i,onChange:a=>j(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),q()),"Escape"===a.key&&(a.preventDefault(),b(!1))},placeholder:"태스크 제목을 입력하고 Enter…",className:"w-full bg-input border border-border rounded-md px-3 py-2 text-sm text-foreground focus:border-primary focus:outline-none"}),m&&(0,L.jsxs)("div",{className:"text-xs text-destructive",children:["⚠ ",m]}),(0,L.jsxs)("div",{className:"flex items-center justify-between",children:[(0,L.jsx)("div",{className:"text-[10px] text-muted-foreground/70",children:"저장 후 해당 태스크 워크스페이스로 바로 이동"}),(0,L.jsxs)("div",{className:"flex gap-2",children:[(0,L.jsx)("button",{onClick:()=>b(!1),className:"text-xs text-muted-foreground px-2 py-1",children:"취소"}),(0,L.jsx)("button",{onClick:q,disabled:!i.trim()||!e||!g||k,className:"text-xs px-3 py-1 bg-primary text-primary-foreground rounded disabled:opacity-40",children:k?"…":"생성"})]})]})]})})}let xK=[{title:"전역",shortcuts:[{keys:"⌘P",desc:"전역 검색"},{keys:"⌘N",desc:"빠른 태스크 생성"},{keys:"⌘M",desc:"전역 메모 (Quick Memo)"},{keys:"⌘J",desc:"전역 AI 어드바이저"},{keys:"?",desc:"이 도움말"}]},{title:"워크스페이스",shortcuts:[{keys:"⌘L",desc:"Project Advisor 열기/닫기"},{keys:"B",desc:"브레인스토밍 패널 토글"},{keys:"N",desc:"새 프로젝트 추가"},{keys:"T",desc:"새 태스크 추가"},{keys:"⌘1",desc:"상태 → Idea"},{keys:"⌘2",desc:"상태 → Doing"},{keys:"⌘3",desc:"상태 → Done"},{keys:"⌘4",desc:"상태 → Problem"}]},{title:"노트 에디터",shortcuts:[{keys:"⌘K",desc:"AI 명령 팔레트"},{keys:"⌘⇧T",desc:"체크박스/불릿 → 태스크 승격"},{keys:"⌘⇧F",desc:"포커스 모드 (노트 풀스크린)"},{keys:"/",desc:"슬래시 명령 (/todo, /table, /code…)"},{keys:"⌘↵",desc:"체크박스 토글 [ ] ↔ [x]"},{keys:"⌘⇧↵",desc:"테이블 행 추가"},{keys:"⌘⇧⌫",desc:"테이블 행 삭제"},{keys:"Tab",desc:"고스트 자동완성 수락"},{keys:"Esc",desc:"고스트 해제"},{keys:"Enter",desc:"리스트 자동 이어쓰기"}]}];function xL(){let[a,b]=(0,M.useState)(!1);return a?(0,L.jsx)("div",{onClick:()=>b(!1),className:"fixed inset-0 z-[70] flex items-center justify-center",style:{background:"rgba(0,0,0,0.5)",backdropFilter:"blur(3px)"},children:(0,L.jsxs)("div",{onClick:a=>a.stopPropagation(),className:"bg-card border border-border rounded-xl shadow-2xl w-full max-w-lg animate-dialog-in p-5",children:[(0,L.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,L.jsx)("h2",{className:"text-sm font-semibold text-foreground",children:"Keyboard Shortcuts"}),(0,L.jsx)("button",{onClick:()=>b(!1),className:"text-muted-foreground hover:text-foreground text-lg leading-none",children:"\xd7"})]}),(0,L.jsx)("div",{className:"space-y-4",children:xK.map(a=>(0,L.jsxs)("div",{children:[(0,L.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-muted-foreground/70 mb-1.5",children:a.title}),(0,L.jsx)("div",{className:"grid grid-cols-[auto_1fr] gap-x-4 gap-y-1",children:a.shortcuts.map(a=>(0,L.jsxs)("div",{className:"contents",children:[(0,L.jsx)("kbd",{className:"text-xs font-mono px-1.5 py-0.5 rounded bg-muted border border-border text-foreground text-right whitespace-nowrap",children:a.keys}),(0,L.jsx)("span",{className:"text-xs text-muted-foreground self-center",children:a.desc})]},a.keys))})]},a.title))}),(0,L.jsx)("div",{className:"mt-4 text-[10px] text-muted-foreground/50 text-center",children:"? 를 다시 눌러 닫기"})]})}):null}function xM(){let[a,b]=(0,M.useState)(!1),[c,d]=(0,M.useState)(""),[e,f]=(0,M.useState)(!1),g=(0,M.useRef)(null),h=(0,M.useCallback)(a=>{g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{fetch("/api/global-memo",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:a})}).then(()=>{window.dispatchEvent(new Event("global-memo-updated"))}).catch(()=>{})},600)},[]);return a?(0,L.jsx)("div",{onClick:()=>b(!1),className:"fixed inset-0 z-[55] flex items-center justify-center",style:{background:"rgba(0,0,0,0.3)",backdropFilter:"blur(2px)"},children:(0,L.jsxs)("div",{onClick:a=>a.stopPropagation(),className:"bg-card border border-border rounded-xl shadow-2xl w-[520px] max-w-[90vw] h-[65vh] max-h-[550px] flex flex-col animate-dialog-in",children:[(0,L.jsxs)("div",{className:"px-4 py-2.5 border-b border-border flex items-center justify-between flex-shrink-0",children:[(0,L.jsxs)("div",{className:"flex items-center gap-2",children:[(0,L.jsx)("span",{className:"text-sm font-semibold text-foreground",children:"Quick Memo"}),(0,L.jsx)("span",{className:"text-[10px] text-muted-foreground/60",children:"⌘M"})]}),(0,L.jsx)("button",{onClick:()=>b(!1),className:"text-muted-foreground hover:text-foreground text-lg leading-none",children:"\xd7"})]}),(0,L.jsx)("div",{className:"flex-1 min-h-0 p-1",children:(0,L.jsx)("textarea",{value:c,onChange:a=>{let b=a.target.value;d(b),h(b)},placeholder:"자유롭게 메모하세요… 전역 스크래치패드입니다.",className:"w-full h-full bg-transparent text-sm text-foreground resize-none focus:outline-none p-3 font-mono leading-relaxed",autoFocus:!0})}),(0,L.jsx)("div",{className:"px-4 py-1.5 border-t border-border text-[10px] text-muted-foreground/50 flex-shrink-0",children:"자동 저장 \xb7 Esc로 닫기"})]})}):null}function xN(){let[a,b]=(0,M.useState)(!1);return a?(0,L.jsx)(xF,{basePath:"/api/global-advisor",title:"Global Advisor",shortcutHint:"⌘J",placeholder:"전체 워크스페이스에 대해 물어보세요…",emptyIcon:"\uD83C\uDF10",emptyHints:["모든 프로젝트를 조망하고 답합니다",'"전체 진행 상황 요약해줘"\n"어떤 프로젝트가 제일 급해?"\n"이번 주 뭐 해야 돼?"'],activityType:"global-advisor",activityLabel:"Global Advisor",onClose:()=>b(!1)}):null}function xO(){let{state:a}=U();return(0,L.jsxs)("div",{className:"h-screen flex flex-col",children:[(0,L.jsx)(ak,{}),(0,L.jsx)(xI,{}),(0,L.jsx)(xJ,{}),(0,L.jsx)(xL,{}),(0,L.jsx)(xM,{}),(0,L.jsx)(xN,{}),(0,L.jsx)("div",{className:"flex-1 min-h-0 relative",children:a.tabs.map(b=>(0,L.jsx)("div",{className:"absolute inset-0 flex flex-col",style:{display:b.id===a.activeTabId?"flex":"none"},children:"dashboard"===b.type?(0,L.jsx)(ar,{}):(0,L.jsx)(xH,{id:b.projectId,initialSubId:b.initialSubId,initialTaskId:b.initialTaskId})},b.id))})]})}function xP(){return(0,L.jsx)(Z,{children:(0,L.jsx)(V,{children:(0,L.jsx)(xO,{})})})}},8301:(a,b,c)=>{Promise.resolve().then(c.bind(c,4494))},8335:()=>{},8354:a=>{"use strict";a.exports=require("util")},8620:a=>{function b(){return a.exports=b=Object.assign?Object.assign.bind():function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)({}).hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a},a.exports.__esModule=!0,a.exports.default=a.exports,b.apply(null,arguments)}a.exports=b,a.exports.__esModule=!0,a.exports.default=a.exports},9121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},9294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},9889:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>D.a,__next_app__:()=>L,handler:()=>N,routeModule:()=>M});var d=c(7553),e=c(4006),f=c(7798),g=c(4775),h=c(9373),i=c(3461),j=c(1020),k=c(6349),l=c(4365),m=c(6023),n=c(3747),o=c(4235),p=c(3938),q=c(261),r=c(6758),s=c(7243),t=c(6713),u=c(7527),v=c(2820),w=c(8216),x=c(7929),y=c(9551),z=c(9125),A=c(6439),B=c(7068),C=c(5547),D=c.n(C),E=c(1287),F=c(1494),G=c(722),H=c(753),I=c(3954),J={};for(let a in E)0>["default","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(J[a]=()=>E[a]);c.d(b,J);let K=["",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,4494)),"/Users/young/Toy/idea-manager/src/app/page.tsx"]}]},{layout:[()=>Promise.resolve().then(c.bind(c,6537)),"/Users/young/Toy/idea-manager/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,5547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,5091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,5270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,8193,23)),"next/dist/client/components/builtin/unauthorized.js"]}],L={require:c,loadChunk:()=>Promise.resolve()},M=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/page",pathname:"/",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:K},distDir:".next",relativeProjectDir:""});async function N(a,b,d){var C;M.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let J=!!(0,h.getRequestMeta)(a,"minimalMode"),O="/page";"/index"===O&&(O="/");let P=await M.prepare(a,b,{srcPage:O,multiZoneDraftMode:!1});if(!P)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Q,query:R,params:S,pageIsDynamic:T,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,serverActionsManifest:X,clientReferenceManifest:Y,subresourceIntegrityManifest:Z,prerenderManifest:$,isDraftMode:_,resolvedPathname:aa,revalidateOnlyGenerated:ab,routerServerContext:ac,nextConfig:ad,parsedUrl:ae,interceptionRoutePatterns:af,deploymentId:ag}=P,ah=(0,q.normalizeAppPath)(O),{isOnDemandRevalidate:ai}=P,aj=ad.experimental.ppr&&!ad.cacheComponents&&(0,I.isInterceptionRouteAppPath)(aa)?null:M.match(aa,$),ak=!!$.routes[aa],al=a.headers["user-agent"]||"",am=(0,t.getBotType)(al),an=(0,p.isHtmlBotRequest)(a),ao=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ap=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],aq=(0,r.getIsPossibleServerAction)(a),ar=(0,m.checkIsAppPPREnabled)(ad.experimental.ppr);if(!(0,h.getRequestMeta)(a,"postponed")&&ar&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let b=[];for await(let c of a)b.push(c);let c=Buffer.concat(b).toString("utf8");(0,h.addRequestMeta)(a,"postponed",c)}let as=ar&&(null==(C=$.routes[ah]??$.dynamicRoutes[ah])?void 0:C.renderingMode)==="PARTIALLY_STATIC",at=!1,au=!1,av=as?(0,h.getRequestMeta)(a,"postponed"):void 0,aw=as&&ap&&!ao;J&&(aw=aw&&!!av);let ax=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ay=(!an||!as)&&(!al||(0,p.shouldServeStreamingMetadata)(al,ad.htmlLimitedBots)),az=!!((aj||ak||$.routes[ah])&&!(an&&as)),aA=as&&!0===ad.cacheComponents,aB=!0===M.isDev||!az||"string"==typeof av||(aA&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aw&&!J:aw),aC=an&&as,aD=null;_||!az||aB||aq||av||aw||(aD=aa);let aE=aD;!aE&&M.isDev&&(aE=aa),M.isDev||_||!az||!ap||aw||(0,k.d)(a.headers);let aF={...E,tree:K,GlobalError:D(),handler:N,routeModule:M,__next_app__:L};X&&Y&&(0,o.setManifestsSingleton)({page:O,clientReferenceManifest:Y,serverActionsManifest:X});let aG=a.method||"GET",aH=(0,g.getTracer)(),aI=aH.getActiveScopeSpan(),aJ=async()=>((null==ac?void 0:ac.render404)?await ac.render404(a,b,ae,!1):b.end("This page could not be found"),null);try{let f=M.getVaryHeader(aa,af);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return M.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aH.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aG} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aG} ${O}`)})},m=(0,h.getRequestMeta)(a,"incrementalCache"),o=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let l={query:R,params:S,page:ah,sharedContext:{buildId:Q},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aF,Component:(0,j.T)(aF),params:S,routeModule:M,page:O,postponed:f,shouldWaitOnAllReady:aC,serveStreamingMetadata:ay,supportsDynamicResponse:"string"==typeof f||aB,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,subresourceIntegrityManifest:Z,setCacheStatus:null==ac?void 0:ac.setCacheStatus,setIsrStatus:null==ac?void 0:ac.setIsrStatus,setReactDebugChannel:null==ac?void 0:ac.setReactDebugChannel,sendErrorsToBrowser:null==ac?void 0:ac.sendErrorsToBrowser,dir:c(3873).join(process.cwd(),M.relativeProjectDir),isDraftMode:_,botType:am,isOnDemandRevalidate:ai,isPossibleServerAction:aq,assetPrefix:ad.assetPrefix,nextConfigOutput:ad.output,crossOrigin:ad.crossOrigin,trailingSlash:ad.trailingSlash,images:ad.images,previewProps:$.preview,deploymentId:ag,enableTainting:ad.experimental.taint,htmlLimitedBots:ad.htmlLimitedBots,reactMaxHeadersLength:ad.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:m,cacheLifeProfiles:ad.cacheLife,basePath:ad.basePath,serverActions:ad.experimental.serverActions,...at||au?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:at}:{},cacheComponents:!!ad.cacheComponents,experimental:{isRoutePPREnabled:as,expireTime:ad.expireTime,staleTimes:ad.experimental.staleTimes,dynamicOnHover:!!ad.experimental.dynamicOnHover,inlineCss:!!ad.experimental.inlineCss,authInterrupts:!!ad.experimental.authInterrupts,clientTraceMetadata:ad.experimental.clientTraceMetadata||[],clientParamParsingOrigins:ad.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,B.parseMaxPostponedStateSize)(ad.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>M.onRequestError(a,b,d,e,ac),err:(0,h.getRequestMeta)(a,"invokeError"),dev:M.isDev}};at&&(l.renderOpts.nextExport=!0,l.renderOpts.supportsDynamicResponse=!1,l.renderOpts.isDebugDynamicAccesses=at),i&&(l.renderOpts.supportsDynamicResponse=!1);let n=await k(e,l),{metadata:o}=n,{cacheControl:p,headers:q={},fetchTags:r,fetchMetrics:s}=o;if(r&&(q[x.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,az&&(null==p?void 0:p.revalidate)===0&&!M.isDev&&!as){let a=o.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${aa}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"484":{"*":{"id":"664","name":"*","chunks":[],"async":false}},"1048":{"*":{"id":"8935","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"440","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"1335","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"2265","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"4661","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"5421","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"1921","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"4342","name":"*","chunks":[],"async":false}},"9770":{"*":{"id":"8229","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":421,"name":"*","chunks":["558","static/chunks/app/layout-52917f6c941a9818.js"],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":9695,"name":"*","chunks":["558","static/chunks/app/layout-52917f6c941a9818.js"],"async":false},"/Users/young/Toy/idea-manager/src/app/globals.css":{"id":1743,"name":"*","chunks":["558","static/chunks/app/layout-52917f6c941a9818.js"],"async":false},"/Users/young/Toy/idea-manager/src/app/page.tsx":{"id":9770,"name":"*","chunks":["79","static/chunks/363642f4-9eb39e0bc542c65b.js","374","static/chunks/374-23189d7e246ad164.js","974","static/chunks/app/page-a0491c7ecdd773ca.js"],"async":false},"/Users/young/Toy/idea-manager/src/app/projects/[id]/page.tsx":{"id":1048,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/young/Toy/idea-manager/src/":[],"/Users/young/Toy/idea-manager/src/app/layout":[{"inlined":false,"path":"static/css/eee3059381776d80.css"}],"/Users/young/Toy/idea-manager/src/app/page":[]},"rscModuleMapping":{"484":{"*":{"id":"8562","name":"*","chunks":[],"async":false}},"1048":{"*":{"id":"8965","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"5098","name":"*","chunks":[],"async":false}},"1743":{"*":{"id":"1135","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"6237","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"3859","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"6675","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"8099","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"5547","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"7644","name":"*","chunks":[],"async":false}},"9770":{"*":{"id":"4494","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"484":{"*":{"id":"664","name":"*","chunks":[],"async":false}},"1048":{"*":{"id":"8935","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"440","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"1335","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"2265","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"4661","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"5421","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"1921","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"4342","name":"*","chunks":[],"async":false}},"9770":{"*":{"id":"8229","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":421,"name":"*","chunks":["558","static/chunks/app/layout-52917f6c941a9818.js"],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":9695,"name":"*","chunks":["558","static/chunks/app/layout-52917f6c941a9818.js"],"async":false},"/Users/young/Toy/idea-manager/src/app/globals.css":{"id":1743,"name":"*","chunks":["558","static/chunks/app/layout-52917f6c941a9818.js"],"async":false},"/Users/young/Toy/idea-manager/src/app/page.tsx":{"id":9770,"name":"*","chunks":["79","static/chunks/363642f4-9eb39e0bc542c65b.js","374","static/chunks/374-23189d7e246ad164.js","974","static/chunks/app/page-835e6af14011d7a8.js"],"async":false},"/Users/young/Toy/idea-manager/src/app/projects/[id]/page.tsx":{"id":1048,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/young/Toy/idea-manager/src/":[],"/Users/young/Toy/idea-manager/src/app/layout":[{"inlined":false,"path":"static/css/eee3059381776d80.css"}],"/Users/young/Toy/idea-manager/src/app/page":[]},"rscModuleMapping":{"484":{"*":{"id":"8562","name":"*","chunks":[],"async":false}},"1048":{"*":{"id":"8965","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"5098","name":"*","chunks":[],"async":false}},"1743":{"*":{"id":"1135","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"6237","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"3859","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"6675","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"8099","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"5547","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"7644","name":"*","chunks":[],"async":false}},"9770":{"*":{"id":"4494","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/projects/[id]/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"484":{"*":{"id":"664","name":"*","chunks":[],"async":false}},"1048":{"*":{"id":"8935","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"440","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"1335","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"2265","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"4661","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"5421","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"1921","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"4342","name":"*","chunks":[],"async":false}},"9770":{"*":{"id":"8229","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":421,"name":"*","chunks":["558","static/chunks/app/layout-52917f6c941a9818.js"],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":9695,"name":"*","chunks":["558","static/chunks/app/layout-52917f6c941a9818.js"],"async":false},"/Users/young/Toy/idea-manager/src/app/globals.css":{"id":1743,"name":"*","chunks":["558","static/chunks/app/layout-52917f6c941a9818.js"],"async":false},"/Users/young/Toy/idea-manager/src/app/page.tsx":{"id":9770,"name":"*","chunks":["79","static/chunks/363642f4-9eb39e0bc542c65b.js","374","static/chunks/374-23189d7e246ad164.js","974","static/chunks/app/page-a0491c7ecdd773ca.js"],"async":false},"/Users/young/Toy/idea-manager/src/app/projects/[id]/page.tsx":{"id":1048,"name":"*","chunks":["801","static/chunks/app/projects/%5Bid%5D/page-822db6c758e612c4.js"],"async":false}},"entryCSSFiles":{"/Users/young/Toy/idea-manager/src/":[],"/Users/young/Toy/idea-manager/src/app/layout":[{"inlined":false,"path":"static/css/eee3059381776d80.css"}],"/Users/young/Toy/idea-manager/src/app/page":[],"/Users/young/Toy/idea-manager/src/app/projects/[id]/page":[]},"rscModuleMapping":{"484":{"*":{"id":"8562","name":"*","chunks":[],"async":false}},"1048":{"*":{"id":"8965","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"5098","name":"*","chunks":[],"async":false}},"1743":{"*":{"id":"1135","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"6237","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"3859","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"6675","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"8099","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"5547","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"7644","name":"*","chunks":[],"async":false}},"9770":{"*":{"id":"4494","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/projects/[id]/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"484":{"*":{"id":"664","name":"*","chunks":[],"async":false}},"1048":{"*":{"id":"8935","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"440","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"1335","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"2265","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"4661","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"5421","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"1921","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"4342","name":"*","chunks":[],"async":false}},"9770":{"*":{"id":"8229","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":421,"name":"*","chunks":["558","static/chunks/app/layout-52917f6c941a9818.js"],"async":false},"/Users/young/Toy/idea-manager/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":9695,"name":"*","chunks":["558","static/chunks/app/layout-52917f6c941a9818.js"],"async":false},"/Users/young/Toy/idea-manager/src/app/globals.css":{"id":1743,"name":"*","chunks":["558","static/chunks/app/layout-52917f6c941a9818.js"],"async":false},"/Users/young/Toy/idea-manager/src/app/page.tsx":{"id":9770,"name":"*","chunks":["79","static/chunks/363642f4-9eb39e0bc542c65b.js","374","static/chunks/374-23189d7e246ad164.js","974","static/chunks/app/page-835e6af14011d7a8.js"],"async":false},"/Users/young/Toy/idea-manager/src/app/projects/[id]/page.tsx":{"id":1048,"name":"*","chunks":["801","static/chunks/app/projects/%5Bid%5D/page-822db6c758e612c4.js"],"async":false}},"entryCSSFiles":{"/Users/young/Toy/idea-manager/src/":[],"/Users/young/Toy/idea-manager/src/app/layout":[{"inlined":false,"path":"static/css/eee3059381776d80.css"}],"/Users/young/Toy/idea-manager/src/app/page":[],"/Users/young/Toy/idea-manager/src/app/projects/[id]/page":[]},"rscModuleMapping":{"484":{"*":{"id":"8562","name":"*","chunks":[],"async":false}},"1048":{"*":{"id":"8965","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"5098","name":"*","chunks":[],"async":false}},"1743":{"*":{"id":"1135","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"6237","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"3859","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"6675","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"8099","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"5547","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"7644","name":"*","chunks":[],"async":false}},"9770":{"*":{"id":"4494","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
@@ -2,33 +2,33 @@
2
2
  "/_not-found/page": "app/_not-found/page.js",
3
3
  "/_global-error/page": "app/_global-error/page.js",
4
4
  "/api/advisor-actions/route": "app/api/advisor-actions/route.js",
5
+ "/api/filesystem/route": "app/api/filesystem/route.js",
5
6
  "/api/archive/route": "app/api/archive/route.js",
7
+ "/api/global-advisor/route": "app/api/global-advisor/route.js",
6
8
  "/api/global-memo/route": "app/api/global-memo/route.js",
7
- "/api/filesystem/route": "app/api/filesystem/route.js",
8
9
  "/api/filesystem/tree/route": "app/api/filesystem/tree/route.js",
9
- "/api/global-advisor/route": "app/api/global-advisor/route.js",
10
10
  "/api/health/route": "app/api/health/route.js",
11
11
  "/api/projects/[id]/apply-distribute/route": "app/api/projects/[id]/apply-distribute/route.js",
12
12
  "/api/projects/[id]/auto-distribute/route": "app/api/projects/[id]/auto-distribute/route.js",
13
- "/api/projects/[id]/git-sync/route": "app/api/projects/[id]/git-sync/route.js",
14
- "/api/projects/[id]/route": "app/api/projects/[id]/route.js",
15
- "/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route.js",
16
13
  "/api/projects/[id]/brainstorm/route": "app/api/projects/[id]/brainstorm/route.js",
17
- "/api/projects/[id]/sub-projects/[subId]/route": "app/api/projects/[id]/sub-projects/[subId]/route.js",
14
+ "/api/projects/[id]/git-sync/route": "app/api/projects/[id]/git-sync/route.js",
18
15
  "/api/projects/[id]/advisor/route": "app/api/projects/[id]/advisor/route.js",
19
- "/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route.js",
16
+ "/api/projects/[id]/sub-projects/[subId]/route": "app/api/projects/[id]/sub-projects/[subId]/route.js",
17
+ "/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route.js",
18
+ "/api/projects/[id]/route": "app/api/projects/[id]/route.js",
20
19
  "/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/route.js",
21
- "/api/projects/[id]/sub-projects/[subId]/tasks/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/route.js",
22
- "/api/search/route": "app/api/search/route.js",
23
- "/api/projects/[id]/sub-projects/route": "app/api/projects/[id]/sub-projects/route.js",
24
- "/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route.js",
25
20
  "/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route.js",
21
+ "/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route.js",
22
+ "/api/projects/[id]/sub-projects/route": "app/api/projects/[id]/sub-projects/route.js",
23
+ "/api/projects/[id]/sub-projects/[subId]/tasks/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/route.js",
26
24
  "/api/projects/route": "app/api/projects/route.js",
27
- "/api/tasks/[taskId]/move/route": "app/api/tasks/[taskId]/move/route.js",
28
25
  "/api/sync/route": "app/api/sync/route.js",
26
+ "/api/tasks/[taskId]/move/route": "app/api/tasks/[taskId]/move/route.js",
27
+ "/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route.js",
28
+ "/api/search/route": "app/api/search/route.js",
29
29
  "/api/maintenance/route": "app/api/maintenance/route.js",
30
- "/api/update/route": "app/api/update/route.js",
31
30
  "/api/version/route": "app/api/version/route.js",
31
+ "/api/update/route": "app/api/update/route.js",
32
32
  "/page": "app/page.js",
33
33
  "/projects/[id]/page": "app/projects/[id]/page.js"
34
34
  }
@@ -1,4 +1,4 @@
1
- exports.id=697,exports.ids=[697],exports.modules={1799:(a,b,c)=>{"use strict";c.d(b,{bE:()=>m,sA:()=>k});var d=c(3873),e=c.n(d),f=c(1820),g=c.n(f),h=c(9021),i=c.n(h);let j=e().join(g().homedir(),".idea-manager","data");function k(){return e().join((i().existsSync(j)||i().mkdirSync(j,{recursive:!0}),j),"im.db")}let l=e().join(g().homedir(),".idea-manager","sync");function m(){return i().existsSync(l)||i().mkdirSync(l,{recursive:!0}),l}},5359:(a,b,c)=>{"use strict";let d,e;c.d(b,{$:()=>g});var f=c(7598);function g(){return function(a=21){var b;b=a|=0,!d||d.length<b?(d=Buffer.allocUnsafe(128*b),f.webcrypto.getRandomValues(d),e=0):e+b>d.length&&(f.webcrypto.getRandomValues(d),e=0),e+=b;let c="";for(let b=e-a;b<e;b++)c+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&d[b]];return c}(16)}},5440:(a,b,c)=>{"use strict";c.d(b,{t:()=>o,L:()=>p});var d=c(9021),e=c.n(d),f=c(1799),g=c(1421);let h=!1,i="";async function j(){let a=new Date,b=a.getHours(),c=`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")}`;if(9===b&&i!==c)try{let a,b;await o();let d=p(),e=d.prepare("SELECT t.title, t.status, p.name as project_name FROM tasks t JOIN projects p ON t.project_id = p.id WHERE t.is_today = 1 AND t.status != 'done'").all(),f=d.prepare("SELECT COUNT(*) as count FROM tasks WHERE status IN ('submitted', 'testing')").get(),h=d.prepare("SELECT COUNT(*) as count FROM tasks WHERE status = 'problem'").get(),j=[];if(e.length>0){for(let a of(j.push(`Today: ${e.length}개`),e.slice(0,5)))j.push(` - ${a.title}`);e.length>5&&j.push(` ... +${e.length-5}개`)}else j.push("Today 태스크가 없습니다.");f.count>0&&j.push(`진행 중: ${f.count}개`),h.count>0&&j.push(`문제: ${h.count}개`),a=j.join("\n").replace(/"/g,'\\"').replace(/\n/g,"\\n"),b=`display notification "${a}" with title "IM - 오늘의 할 일"`,(0,g.exec)(`osascript -e '${b}'`,a=>{a&&console.error("[Scheduler] notification error:",a.message)}),i=c}catch(a){console.error("[Scheduler] error:",a)}}class k{constructor(a,b){this.dirty=!1,this.inTransaction=!1,this.db=a,this.dbPath=b}save(){if(!this.dirty)return;let a=this.db.export();e().writeFileSync(this.dbPath,Buffer.from(a)),this.dirty=!1}immediatelySave(){this.dirty=!0,this.inTransaction||this.save()}rowsToObjects(a,b){return b.map(b=>{let c={};return a.forEach((a,d)=>{c[a]=b[d]}),c})}prepare(a){let b=this,c=/^\s*(INSERT|UPDATE|DELETE|CREATE|ALTER|DROP)/i.test(a);return{all(...c){let d=b.db.prepare(a);c.length>0&&d.bind(c);let e=d.getColumnNames(),f=[];for(;d.step();)f.push(d.get());return d.free(),b.rowsToObjects(e,f)},get(...c){let d,e=b.db.prepare(a);if(c.length>0&&e.bind(c),e.step()){let a=e.getColumnNames(),b=e.get(),c={};a.forEach((a,d)=>{c[a]=b[d]}),d=c}return e.free(),d},run:(...d)=>(b.db.run(a,d),c&&b.immediatelySave(),{changes:b.db.getRowsModified()})}}exec(a){this.db.exec(a),/^\s*(INSERT|UPDATE|DELETE|CREATE|ALTER|DROP)/im.test(a)&&this.immediatelySave()}pragma(a){if(a.startsWith("table_info(")){let b=a.match(/table_info\((\w+)\)/)?.[1];if(!b)return[];let c=this.db.exec(`PRAGMA table_info(${b})`);return c.length?this.rowsToObjects(c[0].columns,c[0].values):[]}if(a.includes("journal_mode")||a.includes("wal_checkpoint"))return this.immediatelySave(),"memory";if(a.includes("foreign_keys")){try{this.db.run(`PRAGMA ${a}`)}catch{}return}try{let b=this.db.exec(`PRAGMA ${a}`);if(b.length>0&&b[0].values.length>0)return b[0].values[0][0]}catch{}}transaction(a){let b=this;return()=>{b.inTransaction=!0,b.db.run("BEGIN");try{let c=a();return b.db.run("COMMIT"),b.inTransaction=!1,b.immediatelySave(),c}catch(a){b.inTransaction=!1;try{b.db.run("ROLLBACK")}catch{}throw a}}}close(){this.immediatelySave(),this.db.close()}}let l=null,m=null;async function n(){let a;if(l)return l;let b=c(9661),d=await b(),g=(0,f.sA)();if(e().existsSync(g)){let b=e().readFileSync(g);a=new d.Database(b)}else a=new d.Database;return!function(a){a.exec(`
1
+ exports.id=697,exports.ids=[697],exports.modules={1799:(a,b,c)=>{"use strict";c.d(b,{bE:()=>m,sA:()=>k});var d=c(3873),e=c.n(d),f=c(1820),g=c.n(f),h=c(9021),i=c.n(h);let j=e().join(g().homedir(),".idea-manager","data");function k(){return e().join((i().existsSync(j)||i().mkdirSync(j,{recursive:!0}),j),"im.db")}let l=e().join(g().homedir(),".idea-manager","sync");function m(){return i().existsSync(l)||i().mkdirSync(l,{recursive:!0}),l}},5359:(a,b,c)=>{"use strict";let d,e;c.d(b,{$:()=>g});var f=c(7598);function g(){return function(a=21){var b;b=a|=0,!d||d.length<b?(d=Buffer.allocUnsafe(128*b),f.webcrypto.getRandomValues(d),e=0):e+b>d.length&&(f.webcrypto.getRandomValues(d),e=0),e+=b;let c="";for(let b=e-a;b<e;b++)c+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&d[b]];return c}(16)}},5440:(a,b,c)=>{"use strict";c.d(b,{t:()=>r,L:()=>s});var d=c(9021),e=c.n(d),f=c(3873),g=c.n(f),h=c(1799),i=c(1421);let j=!1,k=null,l="";async function m(){let a=new Date,b=a.getHours(),c=`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")}`;if(9===b&&l!==c)try{await r();let a=s(),b=a.prepare("SELECT t.title, t.status, p.name as project_name FROM tasks t JOIN projects p ON t.project_id = p.id WHERE t.is_today = 1 AND t.status != 'done'").all(),d=a.prepare("SELECT COUNT(*) as count FROM tasks WHERE status IN ('submitted', 'testing')").get(),e=a.prepare("SELECT COUNT(*) as count FROM tasks WHERE status = 'problem'").get(),f=[];if(b.length>0){for(let a of(f.push(`Today: ${b.length}개`),b.slice(0,5)))f.push(` - ${a.title}`);b.length>5&&f.push(` ... +${b.length-5}개`)}else f.push("Today 태스크가 없습니다.");d.count>0&&f.push(`진행 중: ${d.count}개`),e.count>0&&f.push(`문제: ${e.count}개`),function(a,b){if("darwin"!==process.platform)return console.log(`[${a}] ${b}`);let c=b.replace(/"/g,'\\"').replace(/\n/g,"\\n"),d=`display notification "${c}" with title "${a}"`;(0,i.exec)(`osascript -e '${d}'`,a=>{a&&console.error("[Scheduler] notification error:",a.message)})}("IM - 오늘의 할 일",f.join("\n")),l=c}catch(a){console.error("[Scheduler] error:",a)}}class n{constructor(a,b){this.dirty=!1,this.inTransaction=!1,this.db=a,this.dbPath=b}save(){if(!this.dirty)return;let a=this.db.export(),b=`${this.dbPath}.tmp-${process.pid}`;try{e().writeFileSync(b,Buffer.from(a)),e().renameSync(b,this.dbPath)}catch(a){try{e().unlinkSync(b)}catch{}throw a}this.dirty=!1}immediatelySave(){this.dirty=!0,this.inTransaction||this.save()}rowsToObjects(a,b){return b.map(b=>{let c={};return a.forEach((a,d)=>{c[a]=b[d]}),c})}prepare(a){let b=this,c=/^\s*(INSERT|UPDATE|DELETE|CREATE|ALTER|DROP)/i.test(a);return{all(...c){let d=b.db.prepare(a);c.length>0&&d.bind(c);let e=d.getColumnNames(),f=[];for(;d.step();)f.push(d.get());return d.free(),b.rowsToObjects(e,f)},get(...c){let d,e=b.db.prepare(a);if(c.length>0&&e.bind(c),e.step()){let a=e.getColumnNames(),b=e.get(),c={};a.forEach((a,d)=>{c[a]=b[d]}),d=c}return e.free(),d},run:(...d)=>(b.db.run(a,d),c&&b.immediatelySave(),{changes:b.db.getRowsModified()})}}exec(a){this.db.exec(a),/^\s*(INSERT|UPDATE|DELETE|CREATE|ALTER|DROP)/im.test(a)&&this.immediatelySave()}pragma(a){if(a.startsWith("table_info(")){let b=a.match(/table_info\((\w+)\)/)?.[1];if(!b)return[];let c=this.db.exec(`PRAGMA table_info(${b})`);return c.length?this.rowsToObjects(c[0].columns,c[0].values):[]}if(a.includes("journal_mode")||a.includes("wal_checkpoint"))return this.immediatelySave(),"memory";if(a.includes("foreign_keys")){try{this.db.run(`PRAGMA ${a}`)}catch{}return}try{let b=this.db.exec(`PRAGMA ${a}`);if(b.length>0&&b[0].values.length>0)return b[0].values[0][0]}catch{}}transaction(a){let b=this;return()=>{b.inTransaction=!0,b.db.run("BEGIN");try{let c=a();return b.db.run("COMMIT"),b.inTransaction=!1,b.immediatelySave(),c}catch(a){b.inTransaction=!1;try{b.db.run("ROLLBACK")}catch{}throw a}}}close(){this.immediatelySave(),this.db.close()}}let o=null,p=null;async function q(){let a,b;if(o)return o;let d=c(9661);try{a=g().dirname(9661)}catch{a=""}let f=await d(a?{locateFile:b=>g().join(a,b)}:void 0),i=(0,h.sA)(),l=g().dirname(i);if(e().existsSync(l)||e().mkdirSync(l,{recursive:!0}),e().existsSync(i)){let a=e().readFileSync(i);b=new f.Database(a)}else b=new f.Database;return!function(a){a.exec(`
2
2
  CREATE TABLE IF NOT EXISTS projects (
3
3
  id TEXT PRIMARY KEY,
4
4
  name TEXT NOT NULL,
@@ -121,7 +121,7 @@ exports.id=697,exports.ids=[697],exports.modules={1799:(a,b,c)=>{"use strict";c.
121
121
  SELECT id, project_id, sub_project_id, title, description, status, priority, is_today, sort_order, created_at, updated_at, is_archived, tags FROM tasks;
122
122
  DROP TABLE tasks;
123
123
  ALTER TABLE tasks_new RENAME TO tasks;
124
- `)}(l=new k(a,g)),process.on("exit",()=>l?.close()),h||(h=!0,setInterval(j,6e4),j(),console.log("[Scheduler] Morning notification scheduler started")),l}async function o(){return l||(m||(m=n()),m)}function p(){if(!l)throw Error("Database not initialized. Call await ensureDb() first.");return l}},6487:()=>{},8335:()=>{},9933:(a,b,c)=>{"use strict";c.d(b,{Lw:()=>i,Q$:()=>k,UT:()=>m,ec:()=>l,fn:()=>j,gg:()=>h,lC:()=>n,vq:()=>o,x1:()=>g});var d=c(5440),e=c(5359);function f(a){let b=[];try{b=JSON.parse(a.tags||"[]")}catch{}return{...a,is_today:1===a.is_today,is_archived:(a.is_archived??0)===1,tags:b}}function g(a){return(0,d.L)().prepare("SELECT * FROM tasks WHERE sub_project_id = ? AND is_archived = 0 ORDER BY sort_order ASC").all(a).map(f)}function h(a){let b=(0,d.L)().prepare("SELECT * FROM tasks WHERE id = ?").get(a);return b?f(b):void 0}function i(a){return(0,d.L)().prepare("SELECT * FROM tasks WHERE project_id = ? AND is_archived = 0 ORDER BY sort_order ASC").all(a).map(f)}function j(a){let b=(0,d.L)();return(a?b.prepare("SELECT * FROM tasks WHERE project_id = ? AND is_archived = 1 ORDER BY updated_at DESC").all(a):b.prepare("SELECT * FROM tasks WHERE is_archived = 1 ORDER BY updated_at DESC").all()).map(f)}function k(a){let b=(0,d.L)(),c=new Date().toISOString();return b.prepare("UPDATE tasks SET is_archived = 1, is_today = 0, updated_at = ? WHERE id = ?").run(c,a),h(a)}function l(a){let b=(0,d.L)(),c=new Date().toISOString();return b.prepare("UPDATE tasks SET is_archived = 0, updated_at = ? WHERE id = ?").run(c,a),h(a)}function m(a){let b=(0,d.L)(),c=(0,e.$)(),f=new Date().toISOString(),g=b.prepare("SELECT MAX(sort_order) as max_order FROM tasks WHERE sub_project_id = ?").get(a.sub_project_id),i=(g?.max_order??-1)+1;return b.prepare(`INSERT INTO tasks (id, project_id, sub_project_id, title, description, status, priority, is_today, sort_order, created_at, updated_at)
124
+ `)}(o=new n(b,i)),process.on("exit",()=>o?.close()),j||(j=!0,k=setInterval(m,6e4),k.unref?.(),m(),console.log("[Scheduler] Morning notification scheduler started")),o}async function r(){return o||(p||(p=q()),p)}function s(){if(!o)throw Error("Database not initialized. Call await ensureDb() first.");return o}},6487:()=>{},8335:()=>{},9933:(a,b,c)=>{"use strict";c.d(b,{Lw:()=>i,Q$:()=>k,UT:()=>m,ec:()=>l,fn:()=>j,gg:()=>h,lC:()=>n,vq:()=>o,x1:()=>g});var d=c(5440),e=c(5359);function f(a){let b=[];try{b=JSON.parse(a.tags||"[]")}catch{}return{...a,is_today:1===a.is_today,is_archived:(a.is_archived??0)===1,tags:b}}function g(a){return(0,d.L)().prepare("SELECT * FROM tasks WHERE sub_project_id = ? AND is_archived = 0 ORDER BY sort_order ASC").all(a).map(f)}function h(a){let b=(0,d.L)().prepare("SELECT * FROM tasks WHERE id = ?").get(a);return b?f(b):void 0}function i(a){return(0,d.L)().prepare("SELECT * FROM tasks WHERE project_id = ? AND is_archived = 0 ORDER BY sort_order ASC").all(a).map(f)}function j(a){let b=(0,d.L)();return(a?b.prepare("SELECT * FROM tasks WHERE project_id = ? AND is_archived = 1 ORDER BY updated_at DESC").all(a):b.prepare("SELECT * FROM tasks WHERE is_archived = 1 ORDER BY updated_at DESC").all()).map(f)}function k(a){let b=(0,d.L)(),c=new Date().toISOString();return b.prepare("UPDATE tasks SET is_archived = 1, is_today = 0, updated_at = ? WHERE id = ?").run(c,a),h(a)}function l(a){let b=(0,d.L)(),c=new Date().toISOString();return b.prepare("UPDATE tasks SET is_archived = 0, updated_at = ? WHERE id = ?").run(c,a),h(a)}function m(a){let b=(0,d.L)(),c=(0,e.$)(),f=new Date().toISOString(),g=b.prepare("SELECT MAX(sort_order) as max_order FROM tasks WHERE sub_project_id = ?").get(a.sub_project_id),i=(g?.max_order??-1)+1;return b.prepare(`INSERT INTO tasks (id, project_id, sub_project_id, title, description, status, priority, is_today, sort_order, created_at, updated_at)
125
125
  VALUES (?, ?, ?, ?, ?, ?, ?, 0, ?, ?, ?)`).run(c,a.project_id,a.sub_project_id,a.title,a.description??"",a.status??"idea",a.priority??"medium",i,f,f),h(c)}function n(a,b){let c=(0,d.L)(),e=c.prepare("SELECT * FROM tasks WHERE id = ?").get(a);if(!e)return;let f=new Date().toISOString();return c.prepare(`
126
126
  UPDATE tasks SET
127
127
  title = ?, description = ?, status = ?, priority = ?,
@@ -1,5 +1,5 @@
1
- <!DOCTYPE html><!--cNwwQZS0Jhwz2yyh3ks6E--><html lang="ko"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/4cf2300e9c8272f7-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/93f479601ee12b01-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/eee3059381776d80.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-046a553649a22885.js"/><script src="/_next/static/chunks/4bd1b696-096d35a2bd1da3af.js" async=""></script><script src="/_next/static/chunks/794-37dad9bbc14b04b8.js" async=""></script><script src="/_next/static/chunks/main-app-35159df8e1c56fc3.js" async=""></script><link rel="preload" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css" as="style" crossorigin="anonymous"/><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>IM - 아이디어 매니저</title><meta name="description" content="아이디어에서 실행 가능한 프롬프트까지, 멀티 워크스페이스 워크플로우 매니저"/><link rel="manifest" href="/manifest.json"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="IM"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><link rel="icon" href="/favicon.svg"/><link rel="apple-touch-icon" href="/icon-192.png"/><link rel="stylesheet" as="style" crossorigin="anonymous" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_188709 __variable_9a8899 antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script>
1
+ <!DOCTYPE html><!--8qtkIvEkJ_lmfHkJP6hlo--><html lang="ko"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/4cf2300e9c8272f7-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/93f479601ee12b01-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/eee3059381776d80.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-046a553649a22885.js"/><script src="/_next/static/chunks/4bd1b696-096d35a2bd1da3af.js" async=""></script><script src="/_next/static/chunks/794-37dad9bbc14b04b8.js" async=""></script><script src="/_next/static/chunks/main-app-35159df8e1c56fc3.js" async=""></script><link rel="preload" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css" as="style" crossorigin="anonymous"/><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>IM - 아이디어 매니저</title><meta name="description" content="아이디어에서 실행 가능한 프롬프트까지, 멀티 워크스페이스 워크플로우 매니저"/><link rel="manifest" href="/manifest.json"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="IM"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><link rel="icon" href="/favicon.svg"/><link rel="apple-touch-icon" href="/icon-192.png"/><link rel="stylesheet" as="style" crossorigin="anonymous" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_188709 __variable_9a8899 antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script>
2
2
  if ('serviceWorker' in navigator) {
3
3
  navigator.serviceWorker.register('/sw.js');
4
4
  }
5
- </script><script src="/_next/static/chunks/webpack-046a553649a22885.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7121,[],\"\"]\n3:I[4581,[],\"\"]\n4:I[484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[484,[],\"ViewportBoundary\"]\n9:I[484,[],\"MetadataBoundary\"]\nb:I[7123,[],\"\"]\n:HL[\"/_next/static/media/4cf2300e9c8272f7-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/93f479601ee12b01-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/eee3059381776d80.css\",\"style\"]\n:HL[\"https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css\",\"style\",{\"crossOrigin\":\"anonymous\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"cNwwQZS0Jhwz2yyh3ks6E\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/eee3059381776d80.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ko\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"link\",null,{\"rel\":\"stylesheet\",\"as\":\"style\",\"crossOrigin\":\"anonymous\",\"href\":\"https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css\"}]}],[\"$\",\"body\",null,{\"className\":\"__variable_188709 __variable_9a8899 antialiased\",\"children\":[[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n if ('serviceWorker' in navigator) {\\n navigator.serviceWorker.register('/sw.js');\\n }\\n \"}}]]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"c:I[6869,[],\"IconMark\"]\n6:null\na:[[\"$\",\"title\",\"0\",{\"children\":\"IM - 아이디어 매니저\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"아이디어에서 실행 가능한 프롬프트까지, 멀티 워크스페이스 워크플로우 매니저\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.json\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"3\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"IM\"}],[\"$\",\"meta\",\"5\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"link\",\"6\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"link\",\"7\",{\"rel\":\"apple-touch-icon\",\"href\":\"/icon-192.png\"}],[\"$\",\"$Lc\",\"8\",{}]]\n"])</script></body></html>
5
+ </script><script src="/_next/static/chunks/webpack-046a553649a22885.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7121,[],\"\"]\n3:I[4581,[],\"\"]\n4:I[484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[484,[],\"ViewportBoundary\"]\n9:I[484,[],\"MetadataBoundary\"]\nb:I[7123,[],\"\"]\n:HL[\"/_next/static/media/4cf2300e9c8272f7-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/93f479601ee12b01-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/eee3059381776d80.css\",\"style\"]\n:HL[\"https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css\",\"style\",{\"crossOrigin\":\"anonymous\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"8qtkIvEkJ-lmfHkJP6hlo\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/eee3059381776d80.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ko\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"link\",null,{\"rel\":\"stylesheet\",\"as\":\"style\",\"crossOrigin\":\"anonymous\",\"href\":\"https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css\"}]}],[\"$\",\"body\",null,{\"className\":\"__variable_188709 __variable_9a8899 antialiased\",\"children\":[[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n if ('serviceWorker' in navigator) {\\n navigator.serviceWorker.register('/sw.js');\\n }\\n \"}}]]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"c:I[6869,[],\"IconMark\"]\n6:null\na:[[\"$\",\"title\",\"0\",{\"children\":\"IM - 아이디어 매니저\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"아이디어에서 실행 가능한 프롬프트까지, 멀티 워크스페이스 워크플로우 매니저\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.json\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"3\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"IM\"}],[\"$\",\"meta\",\"5\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"link\",\"6\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"link\",\"7\",{\"rel\":\"apple-touch-icon\",\"href\":\"/icon-192.png\"}],[\"$\",\"$Lc\",\"8\",{}]]\n"])</script></body></html>
@@ -1,2 +1,2 @@
1
- <!DOCTYPE html><!--cNwwQZS0Jhwz2yyh3ks6E--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-046a553649a22885.js"/><script src="/_next/static/chunks/4bd1b696-096d35a2bd1da3af.js" async=""></script><script src="/_next/static/chunks/794-37dad9bbc14b04b8.js" async=""></script><script src="/_next/static/chunks/main-app-35159df8e1c56fc3.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: Internal Server Error.</title><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
- @media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-046a553649a22885.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7121,[],\"\"]\n3:I[4581,[],\"\"]\n4:I[484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[484,[],\"ViewportBoundary\"]\n9:I[484,[],\"MetadataBoundary\"]\nb:I[7123,[],\"\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"cNwwQZS0Jhwz2yyh3ks6E\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><!--8qtkIvEkJ_lmfHkJP6hlo--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-046a553649a22885.js"/><script src="/_next/static/chunks/4bd1b696-096d35a2bd1da3af.js" async=""></script><script src="/_next/static/chunks/794-37dad9bbc14b04b8.js" async=""></script><script src="/_next/static/chunks/main-app-35159df8e1c56fc3.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: Internal Server Error.</title><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
+ @media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-046a553649a22885.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7121,[],\"\"]\n3:I[4581,[],\"\"]\n4:I[484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[484,[],\"ViewportBoundary\"]\n9:I[484,[],\"MetadataBoundary\"]\nb:I[7123,[],\"\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"8qtkIvEkJ-lmfHkJP6hlo\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>