idea-manager 2.4.3 → 2.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +13 -13
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/global-advisor/route.js +5 -3
- package/.next/standalone/.next/server/app/api/projects/[id]/advisor/route.js +8 -3
- package/.next/standalone/.next/server/app/api/projects/[id]/auto-distribute/route.js +2 -2
- package/.next/standalone/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route.js +4 -2
- package/.next/standalone/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route.js +1 -1
- package/.next/standalone/.next/server/app/index.html +2 -2
- package/.next/standalone/.next/server/app/index.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +13 -13
- package/.next/standalone/.next/server/edge-runtime-webpack.js +2 -0
- package/.next/standalone/.next/server/middleware-manifest.json +28 -2
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/server/src/middleware.js +14 -0
- package/.next/standalone/.next/static/chunks/{main-f1d55fffd3cc9809.js → main-f520afb3db76c89a.js} +1 -1
- package/.next/standalone/package.json +2 -1
- package/SECURITY.md +98 -0
- package/package.json +2 -1
- package/src/app/api/global-advisor/route.ts +4 -2
- package/src/app/api/projects/[id]/advisor/route.ts +4 -2
- package/src/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route.ts +4 -2
- package/src/lib/ai/client.ts +8 -1
- package/src/middleware.ts +46 -0
- /package/.next/standalone/.next/static/{IOW4LMC5sTd5lEGD1oowD → 4KcO9RLSS5rLJZa3ECZOs}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{IOW4LMC5sTd5lEGD1oowD → 4KcO9RLSS5rLJZa3ECZOs}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=307,a.ids=[307],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},
|
|
1
|
+
"use strict";(()=>{var a={};a.id=307,a.ids=[307],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},624:(a,b,c)=>{c.d(b,{J:()=>g});var d=c(1421);let e=require("node:fs"),f={claude:{name:"Claude",binary:"claude",buildArgs:({streaming:a,model:b})=>["--dangerously-skip-permissions","--model",b||"opus",...a?["--output-format","stream-json","--verbose"]:["--output-format","text"],"--max-turns","80","-p","-"],buildEnv:()=>{let a={...process.env};for(let b of(delete a.CLAUDECODE,delete a.CLAUDE_CODE_ENTRYPOINT,delete a.CLAUDE_CODE_MAX_OUTPUT_TOKENS,Object.keys(a)))(b.startsWith("CLAUDE_CODE_")||"ANTHROPIC_PARENT_SESSION"===b)&&delete a[b];return{...a,FORCE_COLOR:"0"}},parseStreamEvent:a=>{if("content_block_delta"===a.type&&a.delta?.text)return{text:a.delta.text};if("assistant"===a.type&&a.message?.content){let b="";for(let c of a.message.content)"text"===c.type&&(b+=c.text);return{final:b}}return"result"===a.type&&a.result?{final:a.result}:null},cleanOutput:a=>a.replace(/Error: Reached max turns \(\d+\)\s*/g,"").trim()},gemini:{name:"Gemini",binary:"gemini",buildArgs:({streaming:a})=>["--yolo","-m","gemini-2.5-flash",...a?["--output-format","stream-json"]:["--output-format","json"],"-p","-"],buildEnv:()=>({...process.env,FORCE_COLOR:"0"}),parseStreamEvent:a=>"content_block_delta"===a.type&&a.delta?.text?{text:a.delta.text}:"result"===a.type?{final:a.response||a.text||a.result}:null,cleanOutput:a=>{let b=a.trim();if(!b.startsWith("{"))return b;try{let a=JSON.parse(b);return a.response||a.text||a.result||b}catch{return b}}},codex:{name:"Codex",binary:"codex",buildArgs:({streaming:a})=>["exec","--full-auto",...a?["--json"]:[],"-"],buildEnv:()=>({...process.env,FORCE_COLOR:"0"}),parseStreamEvent:a=>"item.completed"===a.type&&a.item?.type==="agent_message"?{final:a.item.text}:"item.updated"===a.type&&a.item?.type==="agent_message"?{text:a.item.text}:null}};function g(a,b,c,g,h){let i=f[a];return i?new Promise((a,f)=>{let j=!!(c||g),k=i.buildArgs({streaming:j,model:h?.model}),l=i.buildEnv(),m=h?.cwd,n=m&&(0,e.existsSync)(m)?m:process.cwd(),o=(0,d.spawn)(i.binary,k,{cwd:n,stdio:["pipe","pipe","pipe"],shell:"win32"===process.platform,windowsHide:!0,env:l}),p=null,q=!1;h?.timeoutMs&&(p=setTimeout(()=>{q=!0,o.kill("SIGTERM")},h.timeoutMs)),o.on("error",a=>{p&&clearTimeout(p),"ENOENT"===a.code?f(Error(`${i.name} CLI not found on PATH. Install it first.`)):f(Error(`${i.name} CLI error: ${a.message}`))});try{o.stdin?.write(b,"utf8"),o.stdin?.end()}catch(a){p&&clearTimeout(p),f(Error(`Failed to pipe prompt to ${i.name}: ${a.message}`));return}let r="",s="",t="",u=0;j?o.stdout?.on("data",a=>{let b=(r+=a.toString()).split("\n");for(let a of(r=b.pop()??"",b)){let b=a.trim();if(b)try{let a=JSON.parse(b);g?.(a);let d=i.parseStreamEvent(a);if(d)if(d.final){if(d.final.length>u){let a=d.final.slice(u);c?.(a),u=d.final.length}s=d.final}else d.text&&(s+=d.text,u=s.length,c?.(d.text))}catch{}}}):o.stdout?.on("data",a=>{s+=a.toString()}),o.stderr?.on("data",a=>{t+=a.toString()}),o.on("exit",(b,c)=>{if(p&&clearTimeout(p),!j&&i.cleanOutput&&(s=i.cleanOutput(s)),q)return void f(Error(`${i.name} CLI timed out after ${Math.round((h?.timeoutMs||0)/1e3)}s`));if(0!==b&&!s){let a=t.slice(0,500)||(c?`killed by signal ${c}`:"no output");f(Error(`${i.name} CLI exited with code ${b}: ${a}`));return}a(s)})}):Promise.reject(Error(`Unknown agent type: ${a}`))}},846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},1421:a=>{a.exports=require("node:child_process")},1820:a=>{a.exports=require("os")},3033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3873:a=>{a.exports=require("path")},4181:(a,b,c)=>{c.d(b,{T:()=>f,a:()=>e});var d=c(5440);function e(a){return(0,d.L)().prepare("SELECT * FROM brainstorms WHERE project_id = ? ORDER BY version DESC LIMIT 1").get(a)}function f(a,b){let c=(0,d.L)(),f=new Date().toISOString(),g=e(a);if(g)return c.prepare("UPDATE brainstorms SET content = ?, version = version + 1, updated_at = ? WHERE id = ?").run(b,f,g.id),c.prepare("UPDATE projects SET updated_at = ? WHERE id = ?").run(f,a),e(a)}},4870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},5443:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>Q,patchFetch:()=>P,routeModule:()=>L,serverHooks:()=>O,workAsyncStorage:()=>M,workUnitAsyncStorage:()=>N});var d={};c.r(d),c.d(d,{DELETE:()=>K,GET:()=>I,POST:()=>J});var e=c(9225),f=c(4006),g=c(8317),h=c(9373),i=c(4775),j=c(4235),k=c(261),l=c(4365),m=c(771),n=c(3461),o=c(7798),p=c(2280),q=c(2018),r=c(5696),s=c(7929),t=c(6439),u=c(7527),v=c(5592),w=c(5440),x=c(6241),y=c(5359);function z(a,b=50){return(0,w.L)().prepare("SELECT * FROM project_conversations WHERE project_id = ? ORDER BY created_at DESC LIMIT ?").all(a,b).reverse()}function A(a,b,c){let d=(0,w.L)(),e=(0,y.$)(),f=new Date().toISOString();return d.prepare("INSERT INTO project_conversations (id, project_id, role, content, created_at) VALUES (?, ?, ?, ?, ?)").run(e,a,b,c,f),d.prepare("SELECT * FROM project_conversations WHERE id = ?").get(e)}var B=c(7228),C=c(9933),D=c(4181);let E=`
|
|
2
2
|
## Actions
|
|
3
3
|
사용자가 요청하면 태스크 생성/수정을 제안할 수 있습니다. \`\`\`action 블록을 사용하세요.
|
|
4
4
|
사용자가 명시적으로 요청하지 않으면 action 블록을 넣지 마세요.
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
- subProjectId, taskId는 아래 컨텍스트의 [sub_id:...], [task_id:...] 값을 정확히 사용
|
|
16
16
|
- action 블록 앞에 항상 무엇을 제안하는지 설명
|
|
17
17
|
- 사용자가 승인해야 실행됨 (자동 실행 아님)
|
|
18
|
-
`;function F(a,b){return a?a.length<=b?a:a.slice(0,b)+"…":""}let G={idea:"idea",doing:"DOING",writing:"writing",submitted:"submitted",testing:"testing",done:"done",problem:"PROBLEM"};var H=c(
|
|
18
|
+
`;function F(a,b){return a?a.length<=b?a:a.slice(0,b)+"…":""}let G={idea:"idea",doing:"DOING",writing:"writing",submitted:"submitted",testing:"testing",done:"done",problem:"PROBLEM"};var H=c(624);async function I(a,{params:b}){await (0,w.t)();let{id:c}=await b,d=z(c);return v.NextResponse.json(d)}async function J(a,{params:b}){var c;await (0,w.t)();let{id:d}=await b,e=await a.json();if(!e.message||"string"!=typeof e.message)return v.NextResponse.json({error:"message is required"},{status:400});let f=(0,x.U1)(d);if(!f)return v.NextResponse.json({error:"Project not found"},{status:404});let g=A(d,"user",e.message),h=function(a){let b=(0,x.U1)(a);if(!b)return"";let c=(0,D.a)(a),d=(0,B.VU)(a),e=(0,C.Lw)(a),f=new Map;for(let a of e){let b=f.get(a.sub_project_id)??[];b.push(a),f.set(a.sub_project_id,b)}let g=[];for(let a of d){let b=f.get(a.id)??[];if(0===b.length){g.push(`### ${a.name}
|
|
19
19
|
${a.description||"(설명 없음)"}
|
|
20
20
|
태스크 없음.`);continue}let c=[];for(let d of(c.push(`### ${a.name} [sub_id:${a.id}]`),a.description&&c.push(a.description),c.push(`태스크 ${b.length}개:`),b)){let a=["doing","problem","testing"].includes(d.status)||d.is_today?500:200,b=F(d.description,a),e=["high"===d.priority?"HIGH":null,d.is_today?"today":null].filter(Boolean).join(", "),f=e?` (${e})`:"",g=b?` — ${b}`:"";c.push(`- [${G[d.status]??d.status}] **${d.title}** [task_id:${d.id}]${f}${g}`)}g.push(c.join("\n"))}let h={},i=0,j=[];for(let a of e)h[a.status]=(h[a.status]??0)+1,a.is_today&&i++,"problem"===a.status&&j.push(a.title);let k=[`- 전체: ${e.length}개`,...Object.entries(h).map(([a,b])=>` - ${a}: ${b}`),`- Today 표시: ${i}개`];j.length>0&&k.push(`- 문제 태스크: ${j.join(", ")}`);let l=[];return l.push(`당신은 프로젝트 "${b.name}"의 어드바이저입니다.`),l.push(`사용자가 프로젝트 방향, 우선순위, 빠진 부분, 다음 단계 등을 논의하면 프로젝트 전체 맥락을 바탕으로 간결하게 답합니다.`),l.push(`태스크를 언급할 때는 정확한 제목을 쓰세요. 한국어로 답하세요. 긴 설교는 금지.`),l.push(E),b.ai_context&&l.push(`
|
|
21
21
|
Project AI Policy:
|
|
@@ -28,7 +28,12 @@ ${g.join("\n\n")}`),l.push(`
|
|
|
28
28
|
${k.join("\n")}`),l.join("\n")}(d),i=((c=z(d).map(a=>({role:a.role,content:a.content}))).length<=20?c:c.slice(-20)).map(a=>`${"user"===a.role?"User":"system"===a.role?"System":"Assistant"}: ${a.content}`).join("\n"),j=`${h}
|
|
29
29
|
|
|
30
30
|
=== CONVERSATION ===
|
|
31
|
-
${i}`;try{let a=f.agent_type||"claude",b=f.project_path||void 0,c=(await (0,H.J)(a,j,void 0,void 0,{cwd:b,timeoutMs:12e4})).trim();if(!c){let a=A(d,"assistant","(AI 응답을 생성하지 못했습니다. 다시 시도해주세요.)");return v.NextResponse.json({userMessage:g,aiMessage:a})}let e=A(d,"assistant",c);return v.NextResponse.json({userMessage:g,aiMessage:e})}catch
|
|
31
|
+
${i}`;try{let a=f.agent_type||"claude",b=f.project_path||void 0,c=(await (0,H.J)(a,j,void 0,void 0,{cwd:b,timeoutMs:12e4})).trim();if(!c){let a=A(d,"assistant","(AI 응답을 생성하지 못했습니다. 다시 시도해주세요.)");return v.NextResponse.json({userMessage:g,aiMessage:a})}let e=A(d,"assistant",c);return v.NextResponse.json({userMessage:g,aiMessage:e})}catch(c){let a=c instanceof Error?c.message:String(c);console.error("[advisor] AI call failed:",a);let b=A(d,"assistant",`⚠ AI 호출 실패: ${a}
|
|
32
|
+
|
|
33
|
+
**체크리스트**
|
|
34
|
+
- Claude CLI가 PATH에 있는가? (\`claude --version\` 확인)
|
|
35
|
+
- 네트워크 연결 / 로그인 상태?
|
|
36
|
+
- Windows라면 \`claude.cmd\`가 \`where claude\`로 찾아지는지?`);return v.NextResponse.json({userMessage:g,aiMessage:b})}}async function K(a,{params:b}){await (0,w.t)();let{id:c}=await b;return(0,w.L)().prepare("DELETE FROM project_conversations WHERE project_id = ?").run(c),v.NextResponse.json({ok:!0})}let L=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/projects/[id]/advisor/route",pathname:"/api/projects/[id]/advisor",filename:"route",bundlePath:"app/api/projects/[id]/advisor/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/advisor/route.ts",nextConfigOutput:"standalone",userland:d}),{workAsyncStorage:M,workUnitAsyncStorage:N,serverHooks:O}=L;function P(){return(0,g.patchFetch)({workAsyncStorage:M,workUnitAsyncStorage:N})}async function Q(a,b,c){L.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/projects/[id]/advisor/route";"/index"===d&&(d="/");let e=await L.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,resolvedPathname:D,clientReferenceManifest:E,serverActionsManifest:F}=e,G=(0,k.normalizeAppPath)(d),H=!!(z.dynamicRoutes[G]||z.routes[D]),I=async()=>((null==A?void 0:A.render404)?await A.render404(a,b,x,!1):b.end("This page could not be found"),null);if(H&&!y){let a=!!z.routes[D],b=z.dynamicRoutes[G];if(b&&!1===b.fallback&&!a){if(w.experimental.adapterPath)return await I();throw new t.NoFallbackError}}let J=null;!H||L.isDev||y||(J="/index"===(J=D)?"/":J);let K=!0===L.isDev||!H,M=H&&!K;F&&E&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:E,serverActionsManifest:F});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q={params:v,prerenderManifest:z,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:K,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>L.onRequestError(a,b,d,e,A)},sharedContext:{buildId:g}},R=new l.NodeNextRequest(a),S=new l.NodeNextResponse(b),T=m.NextRequestAdapter.fromNodeNextRequest(R,(0,m.signalFromNodeResponse)(b));try{let e=async a=>L.handle(T,Q).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route");if(e){let b=`${N} ${e}`;a.setAttributes({"next.route":e,"http.route":e,"next.span_name":b}),a.updateName(b)}else a.updateName(`${N} ${d}`)}),g=!!(0,h.getRequestMeta)(a,"minimalMode"),j=async h=>{var i,j;let k=async({previousCacheEntry:f})=>{try{if(!g&&B&&C&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await e(h);a.fetchMetrics=Q.renderOpts.fetchMetrics;let i=Q.renderOpts.pendingWaitUntil;i&&c.waitUntil&&(c.waitUntil(i),i=void 0);let j=Q.renderOpts.collectedTags;if(!H)return await (0,p.I)(R,S,d,Q.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);j&&(b[s.NEXT_CACHE_TAGS_HEADER]=j),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==Q.renderOpts.collectedRevalidate&&!(Q.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&Q.renderOpts.collectedRevalidate,e=void 0===Q.renderOpts.collectedExpire||Q.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:Q.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await L.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),b}},l=await L.handleResponse({req:a,nextConfig:w,cacheKey:J,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,responseGenerator:k,waitUntil:c.waitUntil,isMinimalMode:g});if(!H)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(j=l.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});g||b.setHeader("x-nextjs-cache",B?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,q.fromNodeOutgoingHttpHeaders)(l.value.headers);return g&&H||m.delete(s.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||b.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,r.getCacheControlHeader)(l.cacheControl)),await (0,p.I)(R,S,new Response(l.value.body,{headers:m,status:l.value.status||200})),null};P?await j(P):await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},j))}catch(b){if(b instanceof t.NoFallbackError||await L.onRequestError(a,b,{routerKind:"App Router",routePath:G,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),H)throw b;return await (0,p.I)(R,S,new Response(null,{status:500})),null}}},6241:(a,b,c)=>{c.d(b,{U1:()=>h,gA:()=>i,hF:()=>g,vr:()=>j,xx:()=>k});var d=c(5440),e=c(5359);function f(a){return{...a,watch_enabled:1===a.watch_enabled,agent_type:a.agent_type||"claude"}}function g(){return(0,d.L)().prepare("SELECT * FROM projects ORDER BY updated_at DESC").all().map(f)}function h(a){let b=(0,d.L)().prepare("SELECT * FROM projects WHERE id = ?").get(a);return b?f(b):void 0}function i(a,b="",c){let f=(0,d.L)(),g=(0,e.$)(),j=new Date().toISOString();f.prepare("INSERT INTO projects (id, name, description, project_path, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)").run(g,a,b,c??null,j,j);let k=(0,e.$)();return f.prepare("INSERT INTO brainstorms (id, project_id, content, version, created_at, updated_at) VALUES (?, ?, ?, 1, ?, ?)").run(k,g,"",j,j),h(g)}function j(a,b){let c=(0,d.L)(),e=h(a);if(!e)return;let f=new Date().toISOString();return c.prepare("UPDATE projects SET name = ?, description = ?, project_path = ?, ai_context = ?, watch_enabled = ?, agent_type = ?, updated_at = ? WHERE id = ?").run(b.name??e.name,b.description??e.description,void 0!==b.project_path?b.project_path:e.project_path,void 0!==b.ai_context?b.ai_context:e.ai_context??"",void 0!==b.watch_enabled?+!!b.watch_enabled:+!!e.watch_enabled,b.agent_type??e.agent_type??"claude",f,a),h(a)}function k(a){return(0,d.L)().prepare("DELETE FROM projects WHERE id = ?").run(a).changes>0}},6439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},7228:(a,b,c)=>{c.d(b,{G8:()=>g,NG:()=>k,VU:()=>f,bU:()=>j,en:()=>i,kh:()=>h,y4:()=>l});var d=c(5440),e=c(5359);function f(a){return(0,d.L)().prepare("SELECT * FROM sub_projects WHERE project_id = ? ORDER BY sort_order ASC").all(a)}function g(a){return(0,d.L)().prepare("SELECT * FROM sub_projects WHERE id = ?").get(a)}function h(a){let b=(0,d.L)();return b.prepare("SELECT * FROM sub_projects WHERE project_id = ? ORDER BY sort_order ASC").all(a).map(a=>{let c=b.prepare(`
|
|
32
37
|
SELECT
|
|
33
38
|
COUNT(*) as task_count,
|
|
34
39
|
SUM(CASE WHEN status IN ('doing','submitted','testing') THEN 1 ELSE 0 END) as active_count,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(()=>{var a={};a.id=860,a.ids=[860],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},
|
|
1
|
+
(()=>{var a={};a.id=860,a.ids=[860],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},624:(a,b,c)=>{"use strict";c.d(b,{J:()=>g});var d=c(1421);let e=require("node:fs"),f={claude:{name:"Claude",binary:"claude",buildArgs:({streaming:a,model:b})=>["--dangerously-skip-permissions","--model",b||"opus",...a?["--output-format","stream-json","--verbose"]:["--output-format","text"],"--max-turns","80","-p","-"],buildEnv:()=>{let a={...process.env};for(let b of(delete a.CLAUDECODE,delete a.CLAUDE_CODE_ENTRYPOINT,delete a.CLAUDE_CODE_MAX_OUTPUT_TOKENS,Object.keys(a)))(b.startsWith("CLAUDE_CODE_")||"ANTHROPIC_PARENT_SESSION"===b)&&delete a[b];return{...a,FORCE_COLOR:"0"}},parseStreamEvent:a=>{if("content_block_delta"===a.type&&a.delta?.text)return{text:a.delta.text};if("assistant"===a.type&&a.message?.content){let b="";for(let c of a.message.content)"text"===c.type&&(b+=c.text);return{final:b}}return"result"===a.type&&a.result?{final:a.result}:null},cleanOutput:a=>a.replace(/Error: Reached max turns \(\d+\)\s*/g,"").trim()},gemini:{name:"Gemini",binary:"gemini",buildArgs:({streaming:a})=>["--yolo","-m","gemini-2.5-flash",...a?["--output-format","stream-json"]:["--output-format","json"],"-p","-"],buildEnv:()=>({...process.env,FORCE_COLOR:"0"}),parseStreamEvent:a=>"content_block_delta"===a.type&&a.delta?.text?{text:a.delta.text}:"result"===a.type?{final:a.response||a.text||a.result}:null,cleanOutput:a=>{let b=a.trim();if(!b.startsWith("{"))return b;try{let a=JSON.parse(b);return a.response||a.text||a.result||b}catch{return b}}},codex:{name:"Codex",binary:"codex",buildArgs:({streaming:a})=>["exec","--full-auto",...a?["--json"]:[],"-"],buildEnv:()=>({...process.env,FORCE_COLOR:"0"}),parseStreamEvent:a=>"item.completed"===a.type&&a.item?.type==="agent_message"?{final:a.item.text}:"item.updated"===a.type&&a.item?.type==="agent_message"?{text:a.item.text}:null}};function g(a,b,c,g,h){let i=f[a];return i?new Promise((a,f)=>{let j=!!(c||g),k=i.buildArgs({streaming:j,model:h?.model}),l=i.buildEnv(),m=h?.cwd,n=m&&(0,e.existsSync)(m)?m:process.cwd(),o=(0,d.spawn)(i.binary,k,{cwd:n,stdio:["pipe","pipe","pipe"],shell:"win32"===process.platform,windowsHide:!0,env:l}),p=null,q=!1;h?.timeoutMs&&(p=setTimeout(()=>{q=!0,o.kill("SIGTERM")},h.timeoutMs)),o.on("error",a=>{p&&clearTimeout(p),"ENOENT"===a.code?f(Error(`${i.name} CLI not found on PATH. Install it first.`)):f(Error(`${i.name} CLI error: ${a.message}`))});try{o.stdin?.write(b,"utf8"),o.stdin?.end()}catch(a){p&&clearTimeout(p),f(Error(`Failed to pipe prompt to ${i.name}: ${a.message}`));return}let r="",s="",t="",u=0;j?o.stdout?.on("data",a=>{let b=(r+=a.toString()).split("\n");for(let a of(r=b.pop()??"",b)){let b=a.trim();if(b)try{let a=JSON.parse(b);g?.(a);let d=i.parseStreamEvent(a);if(d)if(d.final){if(d.final.length>u){let a=d.final.slice(u);c?.(a),u=d.final.length}s=d.final}else d.text&&(s+=d.text,u=s.length,c?.(d.text))}catch{}}}):o.stdout?.on("data",a=>{s+=a.toString()}),o.stderr?.on("data",a=>{t+=a.toString()}),o.on("exit",(b,c)=>{if(p&&clearTimeout(p),!j&&i.cleanOutput&&(s=i.cleanOutput(s)),q)return void f(Error(`${i.name} CLI timed out after ${Math.round((h?.timeoutMs||0)/1e3)}s`));if(0!==b&&!s){let a=t.slice(0,500)||(c?`killed by signal ${c}`:"no output");f(Error(`${i.name} CLI exited with code ${b}: ${a}`));return}a(s)})}):Promise.reject(Error(`Unknown agent type: ${a}`))}},846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},1421:a=>{"use strict";a.exports=require("node:child_process")},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}},1820:a=>{"use strict";a.exports=require("os")},3033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3873:a=>{"use strict";a.exports=require("path")},4181:(a,b,c)=>{"use strict";c.d(b,{T:()=>f,a:()=>e});var d=c(5440);function e(a){return(0,d.L)().prepare("SELECT * FROM brainstorms WHERE project_id = ? ORDER BY version DESC LIMIT 1").get(a)}function f(a,b){let c=(0,d.L)(),f=new Date().toISOString(),g=e(a);if(g)return c.prepare("UPDATE brainstorms SET content = ?, version = version + 1, updated_at = ? WHERE id = ?").run(b,f,g.id),c.prepare("UPDATE projects SET updated_at = ? WHERE id = ?").run(f,a),e(a)}},4870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},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 @@
|
|
|
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
|
-
`)}(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}},6055:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>H,patchFetch:()=>G,routeModule:()=>C,serverHooks:()=>F,workAsyncStorage:()=>D,workUnitAsyncStorage:()=>E});var d={};c.r(d),c.d(d,{POST:()=>B});var e=c(9225),f=c(4006),g=c(8317),h=c(9373),i=c(4775),j=c(4235),k=c(261),l=c(4365),m=c(771),n=c(3461),o=c(7798),p=c(2280),q=c(2018),r=c(5696),s=c(7929),t=c(6439),u=c(7527),v=c(5592),w=c(4181),x=c(7228),y=c(6241),z=c(
|
|
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}},6055:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>H,patchFetch:()=>G,routeModule:()=>C,serverHooks:()=>F,workAsyncStorage:()=>D,workUnitAsyncStorage:()=>E});var d={};c.r(d),c.d(d,{POST:()=>B});var e=c(9225),f=c(4006),g=c(8317),h=c(9373),i=c(4775),j=c(4235),k=c(261),l=c(4365),m=c(771),n=c(3461),o=c(7798),p=c(2280),q=c(2018),r=c(5696),s=c(7929),t=c(6439),u=c(7527),v=c(5592),w=c(4181),x=c(7228),y=c(6241),z=c(624),A=c(5440);async function B(a,{params:b}){await (0,A.t)();let{id:c}=await b,d=(0,y.U1)(c);if(!d)return v.NextResponse.json({error:"Project not found"},{status:404});let e=(0,w.a)(c);if(!e?.content?.trim())return v.NextResponse.json({error:"No brainstorming content"},{status:400});let f=(0,x.kh)(c),g=f.length>0?`
|
|
125
125
|
|
|
126
126
|
Existing sub-projects:
|
|
127
127
|
${f.map(a=>{let b=a.preview_tasks.length>0?a.preview_tasks.map(a=>` - ${a.title} (${a.status})`).join("\n"):" (no tasks)";return` - "${a.name}" (${a.task_count} tasks)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=123,a.ids=[123],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},
|
|
1
|
+
"use strict";(()=>{var a={};a.id=123,a.ids=[123],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},624:(a,b,c)=>{c.d(b,{J:()=>g});var d=c(1421);let e=require("node:fs"),f={claude:{name:"Claude",binary:"claude",buildArgs:({streaming:a,model:b})=>["--dangerously-skip-permissions","--model",b||"opus",...a?["--output-format","stream-json","--verbose"]:["--output-format","text"],"--max-turns","80","-p","-"],buildEnv:()=>{let a={...process.env};for(let b of(delete a.CLAUDECODE,delete a.CLAUDE_CODE_ENTRYPOINT,delete a.CLAUDE_CODE_MAX_OUTPUT_TOKENS,Object.keys(a)))(b.startsWith("CLAUDE_CODE_")||"ANTHROPIC_PARENT_SESSION"===b)&&delete a[b];return{...a,FORCE_COLOR:"0"}},parseStreamEvent:a=>{if("content_block_delta"===a.type&&a.delta?.text)return{text:a.delta.text};if("assistant"===a.type&&a.message?.content){let b="";for(let c of a.message.content)"text"===c.type&&(b+=c.text);return{final:b}}return"result"===a.type&&a.result?{final:a.result}:null},cleanOutput:a=>a.replace(/Error: Reached max turns \(\d+\)\s*/g,"").trim()},gemini:{name:"Gemini",binary:"gemini",buildArgs:({streaming:a})=>["--yolo","-m","gemini-2.5-flash",...a?["--output-format","stream-json"]:["--output-format","json"],"-p","-"],buildEnv:()=>({...process.env,FORCE_COLOR:"0"}),parseStreamEvent:a=>"content_block_delta"===a.type&&a.delta?.text?{text:a.delta.text}:"result"===a.type?{final:a.response||a.text||a.result}:null,cleanOutput:a=>{let b=a.trim();if(!b.startsWith("{"))return b;try{let a=JSON.parse(b);return a.response||a.text||a.result||b}catch{return b}}},codex:{name:"Codex",binary:"codex",buildArgs:({streaming:a})=>["exec","--full-auto",...a?["--json"]:[],"-"],buildEnv:()=>({...process.env,FORCE_COLOR:"0"}),parseStreamEvent:a=>"item.completed"===a.type&&a.item?.type==="agent_message"?{final:a.item.text}:"item.updated"===a.type&&a.item?.type==="agent_message"?{text:a.item.text}:null}};function g(a,b,c,g,h){let i=f[a];return i?new Promise((a,f)=>{let j=!!(c||g),k=i.buildArgs({streaming:j,model:h?.model}),l=i.buildEnv(),m=h?.cwd,n=m&&(0,e.existsSync)(m)?m:process.cwd(),o=(0,d.spawn)(i.binary,k,{cwd:n,stdio:["pipe","pipe","pipe"],shell:"win32"===process.platform,windowsHide:!0,env:l}),p=null,q=!1;h?.timeoutMs&&(p=setTimeout(()=>{q=!0,o.kill("SIGTERM")},h.timeoutMs)),o.on("error",a=>{p&&clearTimeout(p),"ENOENT"===a.code?f(Error(`${i.name} CLI not found on PATH. Install it first.`)):f(Error(`${i.name} CLI error: ${a.message}`))});try{o.stdin?.write(b,"utf8"),o.stdin?.end()}catch(a){p&&clearTimeout(p),f(Error(`Failed to pipe prompt to ${i.name}: ${a.message}`));return}let r="",s="",t="",u=0;j?o.stdout?.on("data",a=>{let b=(r+=a.toString()).split("\n");for(let a of(r=b.pop()??"",b)){let b=a.trim();if(b)try{let a=JSON.parse(b);g?.(a);let d=i.parseStreamEvent(a);if(d)if(d.final){if(d.final.length>u){let a=d.final.slice(u);c?.(a),u=d.final.length}s=d.final}else d.text&&(s+=d.text,u=s.length,c?.(d.text))}catch{}}}):o.stdout?.on("data",a=>{s+=a.toString()}),o.stderr?.on("data",a=>{t+=a.toString()}),o.on("exit",(b,c)=>{if(p&&clearTimeout(p),!j&&i.cleanOutput&&(s=i.cleanOutput(s)),q)return void f(Error(`${i.name} CLI timed out after ${Math.round((h?.timeoutMs||0)/1e3)}s`));if(0!==b&&!s){let a=t.slice(0,500)||(c?`killed by signal ${c}`:"no output");f(Error(`${i.name} CLI exited with code ${b}: ${a}`));return}a(s)})}):Promise.reject(Error(`Unknown agent type: ${a}`))}},846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},1421:a=>{a.exports=require("node:child_process")},1820:a=>{a.exports=require("os")},3033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3873:a=>{a.exports=require("path")},3953:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>L,patchFetch:()=>K,routeModule:()=>G,serverHooks:()=>J,workAsyncStorage:()=>H,workUnitAsyncStorage:()=>I});var d={};c.r(d),c.d(d,{GET:()=>E,POST:()=>F});var e=c(9225),f=c(4006),g=c(8317),h=c(9373),i=c(4775),j=c(4235),k=c(261),l=c(4365),m=c(771),n=c(3461),o=c(7798),p=c(2280),q=c(2018),r=c(5696),s=c(7929),t=c(6439),u=c(7527),v=c(5592),w=c(5440),x=c(5359);function y(a){return(0,w.L)().prepare("SELECT * FROM task_conversations WHERE task_id = ? ORDER BY created_at ASC").all(a)}function z(a,b,c){let d=(0,w.L)(),e=(0,x.$)(),f=new Date().toISOString();return d.prepare("INSERT INTO task_conversations (id, task_id, role, content, created_at) VALUES (?, ?, ?, ?, ?)").run(e,a,b,c,f),d.prepare("SELECT * FROM task_conversations WHERE id = ?").get(e)}var A=c(9933),B=c(4181),C=c(6241),D=c(624);async function E(a,{params:b}){await (0,w.t)();let{taskId:c}=await b,d=y(c);return v.NextResponse.json(d)}async function F(a,{params:b}){await (0,w.t)();let{id:c,taskId:d}=await b,e=await a.json();if(!e.message||"string"!=typeof e.message)return v.NextResponse.json({error:"message is required"},{status:400});let f=(0,A.gg)(d);if(!f)return v.NextResponse.json({error:"Task not found"},{status:404});let g=z(d,"user",e.message),h=y(d),i=(0,B.a)(c),j=(0,C.U1)(c),k=j?.ai_context?`
|
|
2
2
|
|
|
3
3
|
Project AI Policy:
|
|
4
4
|
${j.ai_context}`:"",l=`당신은 사용자가 자기 태스크 "노트"를 다듬는 것을 돕는 보조자입니다.
|
|
@@ -18,4 +18,6 @@ Brainstorming context:
|
|
|
18
18
|
${i.content.slice(0,3e3)}`:""}`,m=h.map(a=>`${"user"===a.role?"User":"Assistant"}: ${a.content}`).join("\n");try{let a=j?.agent_type||"claude",b=j?.project_path||void 0,c=(await (0,D.J)(a,`${l}
|
|
19
19
|
|
|
20
20
|
Conversation:
|
|
21
|
-
${m}`,void 0,void 0,{cwd:b})).trim();if(!c){let a=z(d,"assistant","(AI 응답을 생성하지 못했습니다. 다시 시도해주세요.)");return v.NextResponse.json({userMessage:g,aiMessage:a})}let e=z(d,"assistant",c);return v.NextResponse.json({userMessage:g,aiMessage:e})}catch
|
|
21
|
+
${m}`,void 0,void 0,{cwd:b})).trim();if(!c){let a=z(d,"assistant","(AI 응답을 생성하지 못했습니다. 다시 시도해주세요.)");return v.NextResponse.json({userMessage:g,aiMessage:a})}let e=z(d,"assistant",c);return v.NextResponse.json({userMessage:g,aiMessage:e})}catch(c){let a=c instanceof Error?c.message:String(c);console.error("[task-chat] AI call failed:",a);let b=z(d,"assistant",`⚠ AI 호출 실패: ${a}
|
|
22
|
+
|
|
23
|
+
Claude CLI가 설치되어 있고 PATH에 있는지 확인하세요 (\`claude --version\`).`);return v.NextResponse.json({userMessage:g,aiMessage:b})}}let G=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route",pathname:"/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat",filename:"route",bundlePath:"app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route.ts",nextConfigOutput:"standalone",userland:d}),{workAsyncStorage:H,workUnitAsyncStorage:I,serverHooks:J}=G;function K(){return(0,g.patchFetch)({workAsyncStorage:H,workUnitAsyncStorage:I})}async function L(a,b,c){G.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route";"/index"===d&&(d="/");let e=await G.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:y,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,resolvedPathname:D,clientReferenceManifest:E,serverActionsManifest:F}=e,H=(0,k.normalizeAppPath)(d),I=!!(z.dynamicRoutes[H]||z.routes[D]),J=async()=>((null==A?void 0:A.render404)?await A.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!z.routes[D],b=z.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.experimental.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||G.isDev||y||(K="/index"===(K=D)?"/":K);let L=!0===G.isDev||!I,M=I&&!L;F&&E&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:E,serverActionsManifest:F});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q={params:v,prerenderManifest:z,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:L,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:w.cacheLife,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>G.onRequestError(a,b,d,e,A)},sharedContext:{buildId:g}},R=new l.NodeNextRequest(a),S=new l.NodeNextResponse(b),T=m.NextRequestAdapter.fromNodeNextRequest(R,(0,m.signalFromNodeResponse)(b));try{let e=async a=>G.handle(T,Q).finally(()=>{if(!a)return;a.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let c=O.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route");if(e){let b=`${N} ${e}`;a.setAttributes({"next.route":e,"http.route":e,"next.span_name":b}),a.updateName(b)}else a.updateName(`${N} ${d}`)}),g=!!(0,h.getRequestMeta)(a,"minimalMode"),j=async h=>{var i,j;let k=async({previousCacheEntry:f})=>{try{if(!g&&B&&C&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await e(h);a.fetchMetrics=Q.renderOpts.fetchMetrics;let i=Q.renderOpts.pendingWaitUntil;i&&c.waitUntil&&(c.waitUntil(i),i=void 0);let j=Q.renderOpts.collectedTags;if(!I)return await (0,p.I)(R,S,d,Q.renderOpts.pendingWaitUntil),null;{let a=await d.blob(),b=(0,q.toNodeOutgoingHttpHeaders)(d.headers);j&&(b[s.NEXT_CACHE_TAGS_HEADER]=j),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==Q.renderOpts.collectedRevalidate&&!(Q.renderOpts.collectedRevalidate>=s.INFINITE_CACHE)&&Q.renderOpts.collectedRevalidate,e=void 0===Q.renderOpts.collectedExpire||Q.renderOpts.collectedExpire>=s.INFINITE_CACHE?void 0:Q.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==f?void 0:f.isStale)&&await G.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),b}},l=await G.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,responseGenerator:k,waitUntil:c.waitUntil,isMinimalMode:g});if(!I)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(j=l.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});g||b.setHeader("x-nextjs-cache",B?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),y&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,q.fromNodeOutgoingHttpHeaders)(l.value.headers);return g&&I||m.delete(s.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||b.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,r.getCacheControlHeader)(l.cacheControl)),await (0,p.I)(R,S,new Response(l.value.body,{headers:m,status:l.value.status||200})),null};P?await j(P):await O.withPropagatedContext(a.headers,()=>O.trace(n.BaseServerSpan.handleRequest,{spanName:`${N} ${d}`,kind:i.SpanKind.SERVER,attributes:{"http.method":N,"http.target":a.url}},j))}catch(b){if(b instanceof t.NoFallbackError||await G.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:B})},!1,A),I)throw b;return await (0,p.I)(R,S,new Response(null,{status:500})),null}}},4181:(a,b,c)=>{c.d(b,{T:()=>f,a:()=>e});var d=c(5440);function e(a){return(0,d.L)().prepare("SELECT * FROM brainstorms WHERE project_id = ? ORDER BY version DESC LIMIT 1").get(a)}function f(a,b){let c=(0,d.L)(),f=new Date().toISOString(),g=e(a);if(g)return c.prepare("UPDATE brainstorms SET content = ?, version = version + 1, updated_at = ? WHERE id = ?").run(b,f,g.id),c.prepare("UPDATE projects SET updated_at = ? WHERE id = ?").run(f,a),e(a)}},4870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},6241:(a,b,c)=>{c.d(b,{U1:()=>h,gA:()=>i,hF:()=>g,vr:()=>j,xx:()=>k});var d=c(5440),e=c(5359);function f(a){return{...a,watch_enabled:1===a.watch_enabled,agent_type:a.agent_type||"claude"}}function g(){return(0,d.L)().prepare("SELECT * FROM projects ORDER BY updated_at DESC").all().map(f)}function h(a){let b=(0,d.L)().prepare("SELECT * FROM projects WHERE id = ?").get(a);return b?f(b):void 0}function i(a,b="",c){let f=(0,d.L)(),g=(0,e.$)(),j=new Date().toISOString();f.prepare("INSERT INTO projects (id, name, description, project_path, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)").run(g,a,b,c??null,j,j);let k=(0,e.$)();return f.prepare("INSERT INTO brainstorms (id, project_id, content, version, created_at, updated_at) VALUES (?, ?, ?, 1, ?, ?)").run(k,g,"",j,j),h(g)}function j(a,b){let c=(0,d.L)(),e=h(a);if(!e)return;let f=new Date().toISOString();return c.prepare("UPDATE projects SET name = ?, description = ?, project_path = ?, ai_context = ?, watch_enabled = ?, agent_type = ?, updated_at = ? WHERE id = ?").run(b.name??e.name,b.description??e.description,void 0!==b.project_path?b.project_path:e.project_path,void 0!==b.ai_context?b.ai_context:e.ai_context??"",void 0!==b.watch_enabled?+!!b.watch_enabled:+!!e.watch_enabled,b.agent_type??e.agent_type??"claude",f,a),h(a)}function k(a){return(0,d.L)().prepare("DELETE FROM projects WHERE id = ?").run(a).changes>0}},6439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},7598:a=>{a.exports=require("node:crypto")},9021:a=>{a.exports=require("fs")},9294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},9661:a=>{a.exports=require("sql.js/dist/sql-wasm.js")}};var b=require("../../../../../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[445,813,697],()=>b(b.s=3953));module.exports=c})();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=770,a.ids=[770],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},
|
|
1
|
+
"use strict";(()=>{var a={};a.id=770,a.ids=[770],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},624:(a,b,c)=>{c.d(b,{J:()=>g});var d=c(1421);let e=require("node:fs"),f={claude:{name:"Claude",binary:"claude",buildArgs:({streaming:a,model:b})=>["--dangerously-skip-permissions","--model",b||"opus",...a?["--output-format","stream-json","--verbose"]:["--output-format","text"],"--max-turns","80","-p","-"],buildEnv:()=>{let a={...process.env};for(let b of(delete a.CLAUDECODE,delete a.CLAUDE_CODE_ENTRYPOINT,delete a.CLAUDE_CODE_MAX_OUTPUT_TOKENS,Object.keys(a)))(b.startsWith("CLAUDE_CODE_")||"ANTHROPIC_PARENT_SESSION"===b)&&delete a[b];return{...a,FORCE_COLOR:"0"}},parseStreamEvent:a=>{if("content_block_delta"===a.type&&a.delta?.text)return{text:a.delta.text};if("assistant"===a.type&&a.message?.content){let b="";for(let c of a.message.content)"text"===c.type&&(b+=c.text);return{final:b}}return"result"===a.type&&a.result?{final:a.result}:null},cleanOutput:a=>a.replace(/Error: Reached max turns \(\d+\)\s*/g,"").trim()},gemini:{name:"Gemini",binary:"gemini",buildArgs:({streaming:a})=>["--yolo","-m","gemini-2.5-flash",...a?["--output-format","stream-json"]:["--output-format","json"],"-p","-"],buildEnv:()=>({...process.env,FORCE_COLOR:"0"}),parseStreamEvent:a=>"content_block_delta"===a.type&&a.delta?.text?{text:a.delta.text}:"result"===a.type?{final:a.response||a.text||a.result}:null,cleanOutput:a=>{let b=a.trim();if(!b.startsWith("{"))return b;try{let a=JSON.parse(b);return a.response||a.text||a.result||b}catch{return b}}},codex:{name:"Codex",binary:"codex",buildArgs:({streaming:a})=>["exec","--full-auto",...a?["--json"]:[],"-"],buildEnv:()=>({...process.env,FORCE_COLOR:"0"}),parseStreamEvent:a=>"item.completed"===a.type&&a.item?.type==="agent_message"?{final:a.item.text}:"item.updated"===a.type&&a.item?.type==="agent_message"?{text:a.item.text}:null}};function g(a,b,c,g,h){let i=f[a];return i?new Promise((a,f)=>{let j=!!(c||g),k=i.buildArgs({streaming:j,model:h?.model}),l=i.buildEnv(),m=h?.cwd,n=m&&(0,e.existsSync)(m)?m:process.cwd(),o=(0,d.spawn)(i.binary,k,{cwd:n,stdio:["pipe","pipe","pipe"],shell:"win32"===process.platform,windowsHide:!0,env:l}),p=null,q=!1;h?.timeoutMs&&(p=setTimeout(()=>{q=!0,o.kill("SIGTERM")},h.timeoutMs)),o.on("error",a=>{p&&clearTimeout(p),"ENOENT"===a.code?f(Error(`${i.name} CLI not found on PATH. Install it first.`)):f(Error(`${i.name} CLI error: ${a.message}`))});try{o.stdin?.write(b,"utf8"),o.stdin?.end()}catch(a){p&&clearTimeout(p),f(Error(`Failed to pipe prompt to ${i.name}: ${a.message}`));return}let r="",s="",t="",u=0;j?o.stdout?.on("data",a=>{let b=(r+=a.toString()).split("\n");for(let a of(r=b.pop()??"",b)){let b=a.trim();if(b)try{let a=JSON.parse(b);g?.(a);let d=i.parseStreamEvent(a);if(d)if(d.final){if(d.final.length>u){let a=d.final.slice(u);c?.(a),u=d.final.length}s=d.final}else d.text&&(s+=d.text,u=s.length,c?.(d.text))}catch{}}}):o.stdout?.on("data",a=>{s+=a.toString()}),o.stderr?.on("data",a=>{t+=a.toString()}),o.on("exit",(b,c)=>{if(p&&clearTimeout(p),!j&&i.cleanOutput&&(s=i.cleanOutput(s)),q)return void f(Error(`${i.name} CLI timed out after ${Math.round((h?.timeoutMs||0)/1e3)}s`));if(0!==b&&!s){let a=t.slice(0,500)||(c?`killed by signal ${c}`:"no output");f(Error(`${i.name} CLI exited with code ${b}: ${a}`));return}a(s)})}):Promise.reject(Error(`Unknown agent type: ${a}`))}},846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},1421:a=>{a.exports=require("node:child_process")},1820:a=>{a.exports=require("os")},3033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3873:a=>{a.exports=require("path")},4870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},6241:(a,b,c)=>{c.d(b,{U1:()=>h,gA:()=>i,hF:()=>g,vr:()=>j,xx:()=>k});var d=c(5440),e=c(5359);function f(a){return{...a,watch_enabled:1===a.watch_enabled,agent_type:a.agent_type||"claude"}}function g(){return(0,d.L)().prepare("SELECT * FROM projects ORDER BY updated_at DESC").all().map(f)}function h(a){let b=(0,d.L)().prepare("SELECT * FROM projects WHERE id = ?").get(a);return b?f(b):void 0}function i(a,b="",c){let f=(0,d.L)(),g=(0,e.$)(),j=new Date().toISOString();f.prepare("INSERT INTO projects (id, name, description, project_path, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)").run(g,a,b,c??null,j,j);let k=(0,e.$)();return f.prepare("INSERT INTO brainstorms (id, project_id, content, version, created_at, updated_at) VALUES (?, ?, ?, 1, ?, ?)").run(k,g,"",j,j),h(g)}function j(a,b){let c=(0,d.L)(),e=h(a);if(!e)return;let f=new Date().toISOString();return c.prepare("UPDATE projects SET name = ?, description = ?, project_path = ?, ai_context = ?, watch_enabled = ?, agent_type = ?, updated_at = ? WHERE id = ?").run(b.name??e.name,b.description??e.description,void 0!==b.project_path?b.project_path:e.project_path,void 0!==b.ai_context?b.ai_context:e.ai_context??"",void 0!==b.watch_enabled?+!!b.watch_enabled:+!!e.watch_enabled,b.agent_type??e.agent_type??"claude",f,a),h(a)}function k(a){return(0,d.L)().prepare("DELETE FROM projects WHERE id = ?").run(a).changes>0}},6439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},7204:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>G,patchFetch:()=>F,routeModule:()=>B,serverHooks:()=>E,workAsyncStorage:()=>C,workUnitAsyncStorage:()=>D});var d={};c.r(d),c.d(d,{POST:()=>A});var e=c(9225),f=c(4006),g=c(8317),h=c(9373),i=c(4775),j=c(4235),k=c(261),l=c(4365),m=c(771),n=c(3461),o=c(7798),p=c(2280),q=c(2018),r=c(5696),s=c(7929),t=c(6439),u=c(7527),v=c(5592),w=c(9933),x=c(6241),y=c(624),z=c(5440);async function A(a,{params:b}){await (0,z.t)();let{id:c,taskId:d}=await b,e=await a.json();if(!e.command)return v.NextResponse.json({error:"command is required"},{status:400});let f=(0,w.gg)(d);if(!f)return v.NextResponse.json({error:"Task not found"},{status:404});let g=(0,x.U1)(c),h=g?.ai_context?`
|
|
2
2
|
|
|
3
3
|
Project AI Policy:
|
|
4
4
|
${g.ai_context}`:"",i=function(a,b){switch(a){case"continue":return"아래 노트의 흐름을 자연스럽게 이어서 덧붙일 한 단락(또는 bullet 몇 개)을 마크다운으로 작성하세요. 설명은 빼고 이어질 내용만 출력.";case"tidy":return"아래 선택 영역의 뜻을 바꾸지 않고 깔끔하게 다듬어 주세요. 설명 없이 다듬어진 본문만 마크다운으로 출력.";case"split":return'아래 선택 영역(또는 노트 전체)을 구체적인 할 일 단위의 체크박스 리스트로 변환하세요. 각 항목은 "- [ ] "로 시작. 설명 없이 리스트만 출력.';case"to-questions":return'아래 내용에서 애매하거나 결정이 필요한 부분을 찾아 명확하게 해줄 질문 목록으로 바꿔주세요. "- Q. "로 시작하는 bullet로 출력. 설명 생략.';case"summarize":return"아래 내용을 3줄 이내로 요약하세요. bullet 3개. 설명 없이 요약만.";case"custom":return b?.trim()||"아래 내용을 개선해주세요."}}(e.command,e.customText),j=e.selection?.trim(),k=e.note??f.description??"",l=`당신은 사용자의 노트 작성을 돕는 보조자입니다. 한국어로 답하세요.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--4KcO9RLSS5rLJZa3ECZOs--><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/9e9e9ada87c6dd84.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><script src="/_next/static/chunks/363642f4-9eb39e0bc542c65b.js" async=""></script><script src="/_next/static/chunks/374-23189d7e246ad164.js" async=""></script><script src="/_next/static/chunks/app/page-811d22e486a3d87e.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="next-size-adjust" content=""/><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 class="h-screen flex flex-col"><div class="tab-bar"><div class="tab-item tab-item-active"><span class="truncate">Dashboard</span></div><div class="tab-bar-spacer"></div><button class="theme-picker-btn" title="테마 변경"><span class="theme-picker-preview" style="background:hsl(210 85% 60%)"></span><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"></circle><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"></path></svg></button></div><div class="flex-1 min-h-0 relative"><div class="absolute inset-0 flex flex-col" style="display:flex"><div class="h-full overflow-y-auto p-8 w-full max-w-5xl mx-auto"><header class="flex items-center justify-between mb-6"><div><h1 class="text-2xl font-bold tracking-tight">IM <span class="text-muted-foreground font-normal text-sm ml-2">Idea Manager v2</span></h1></div><div class="flex items-center gap-3"><button class="px-3 py-2 text-sm border rounded-lg transition-colors bg-muted hover:bg-card-hover text-muted-foreground border-border" title="DB Sync via Git">Sync</button><button class="px-3 py-2 text-sm border rounded-lg transition-colors bg-muted hover:bg-card-hover text-muted-foreground border-border" title="Quick memo">Memo</button><button class="px-4 py-2 bg-primary hover:bg-primary-hover text-white rounded-lg transition-colors font-medium text-sm">+ Workspace</button></div></header><div class="text-center text-muted-foreground py-20">Loading...</div></div></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[1304,[],\"ClientPageRoot\"]\n5:I[7108,[\"79\",\"static/chunks/363642f4-9eb39e0bc542c65b.js\",\"374\",\"static/chunks/374-23189d7e246ad164.js\",\"974\",\"static/chunks/app/page-811d22e486a3d87e.js\"],\"default\"]\n8:I[484,[],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[484,[],\"ViewportBoundary\"]\nd:I[484,[],\"MetadataBoundary\"]\nf: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/9e9e9ada87c6dd84.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\":\"
|
|
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[1304,[],\"ClientPageRoot\"]\n5:I[7108,[\"79\",\"static/chunks/363642f4-9eb39e0bc542c65b.js\",\"374\",\"static/chunks/374-23189d7e246ad164.js\",\"974\",\"static/chunks/app/page-811d22e486a3d87e.js\"],\"default\"]\n8:I[484,[],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[484,[],\"ViewportBoundary\"]\nd:I[484,[],\"MetadataBoundary\"]\nf: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/9e9e9ada87c6dd84.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\":\"4KcO9RLSS5rLJZa3ECZOs\",\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/9e9e9ada87c6dd84.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\":[[[\"$\",\"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.\"}]}]]}]}]],[]],\"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\":[[\"$\",\"$L4\",null,{\"Component\":\"$5\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@6\",\"$@7\"]}}],null,[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"6:{}\n7:\"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"10:I[6869,[],\"IconMark\"]\na:null\ne:[[\"$\",\"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\"}],[\"$\",\"$L10\",\"8\",{}]]\n"])</script></body></html>
|
|
@@ -12,7 +12,7 @@ f:I[7123,[],""]
|
|
|
12
12
|
:HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
13
13
|
:HL["/_next/static/css/9e9e9ada87c6dd84.css","style"]
|
|
14
14
|
:HL["https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css","style",{"crossOrigin":"anonymous"}]
|
|
15
|
-
0:{"P":null,"b":"
|
|
15
|
+
0:{"P":null,"b":"4KcO9RLSS5rLJZa3ECZOs","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/9e9e9ada87c6dd84.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":[[["$","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."}]}]]}]}]],[]],"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":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],null,["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[]],"S":true}
|
|
16
16
|
6:{}
|
|
17
17
|
7:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
|
|
18
18
|
c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
3:I[7108,["79","static/chunks/363642f4-9eb39e0bc542c65b.js","374","static/chunks/374-23189d7e246ad164.js","974","static/chunks/app/page-811d22e486a3d87e.js"],"default"]
|
|
4
4
|
6:I[484,[],"OutletBoundary"]
|
|
5
5
|
7:"$Sreact.suspense"
|
|
6
|
-
0:{"buildId":"
|
|
6
|
+
0:{"buildId":"4KcO9RLSS5rLJZa3ECZOs","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],null,["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
|
|
7
7
|
4:{}
|
|
8
8
|
5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
|
|
9
9
|
8:null
|
|
@@ -12,7 +12,7 @@ f:I[7123,[],""]
|
|
|
12
12
|
:HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
13
13
|
:HL["/_next/static/css/9e9e9ada87c6dd84.css","style"]
|
|
14
14
|
:HL["https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css","style",{"crossOrigin":"anonymous"}]
|
|
15
|
-
0:{"P":null,"b":"
|
|
15
|
+
0:{"P":null,"b":"4KcO9RLSS5rLJZa3ECZOs","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/9e9e9ada87c6dd84.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":[[["$","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."}]}]]}]}]],[]],"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":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],null,["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[]],"S":true}
|
|
16
16
|
6:{}
|
|
17
17
|
7:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
|
|
18
18
|
c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
3:I[484,[],"MetadataBoundary"]
|
|
4
4
|
4:"$Sreact.suspense"
|
|
5
5
|
5:I[6869,[],"IconMark"]
|
|
6
|
-
0:{"buildId":"
|
|
6
|
+
0:{"buildId":"4KcO9RLSS5rLJZa3ECZOs","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"IM - 아이디어 매니저"}],["$","meta","1",{"name":"description","content":"아이디어에서 실행 가능한 프롬프트까지, 멀티 워크스페이스 워크플로우 매니저"}],["$","link","2",{"rel":"manifest","href":"/manifest.json"}],["$","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"}],["$","$L5","8",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false}
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
3:I[4581,[],""]
|
|
4
4
|
:HL["/_next/static/css/9e9e9ada87c6dd84.css","style"]
|
|
5
5
|
:HL["https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css","style",{"crossOrigin":"anonymous"}]
|
|
6
|
-
0:{"buildId":"
|
|
6
|
+
0:{"buildId":"4KcO9RLSS5rLJZa3ECZOs","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/9e9e9ada87c6dd84.css","precedence":"next"}]],["$","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","template":["$","$L3",null,{}],"notFound":[[["$","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."}]}]]}]}]],[]]}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.register('/sw.js');\n }\n "}}]]}]]}]]}],"loading":null,"isPartial":false}
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
:HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
3
3
|
:HL["/_next/static/css/9e9e9ada87c6dd84.css","style"]
|
|
4
4
|
:HL["https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css","style",{"crossOrigin":"anonymous"}]
|
|
5
|
-
0:{"buildId":"
|
|
5
|
+
0:{"buildId":"4KcO9RLSS5rLJZa3ECZOs","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
|
|
@@ -2,29 +2,29 @@
|
|
|
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/
|
|
5
|
+
"/api/archive/route": "app/api/archive/route.js",
|
|
6
6
|
"/api/global-memo/route": "app/api/global-memo/route.js",
|
|
7
|
-
"/api/global-advisor/route": "app/api/global-advisor/route.js",
|
|
8
7
|
"/api/health/route": "app/api/health/route.js",
|
|
9
|
-
"/api/archive/route": "app/api/archive/route.js",
|
|
10
8
|
"/api/filesystem/route": "app/api/filesystem/route.js",
|
|
11
|
-
"/api/
|
|
12
|
-
"/api/
|
|
13
|
-
"/api/projects/[id]/route": "app/api/projects/[id]/route.js",
|
|
9
|
+
"/api/filesystem/tree/route": "app/api/filesystem/tree/route.js",
|
|
10
|
+
"/api/global-advisor/route": "app/api/global-advisor/route.js",
|
|
11
|
+
"/api/projects/[id]/advisor/route": "app/api/projects/[id]/advisor/route.js",
|
|
14
12
|
"/api/projects/[id]/auto-distribute/route": "app/api/projects/[id]/auto-distribute/route.js",
|
|
15
13
|
"/api/projects/[id]/apply-distribute/route": "app/api/projects/[id]/apply-distribute/route.js",
|
|
16
|
-
"/api/projects/[id]/
|
|
14
|
+
"/api/projects/[id]/git-sync/route": "app/api/projects/[id]/git-sync/route.js",
|
|
15
|
+
"/api/projects/[id]/route": "app/api/projects/[id]/route.js",
|
|
16
|
+
"/api/projects/[id]/brainstorm/route": "app/api/projects/[id]/brainstorm/route.js",
|
|
17
17
|
"/api/projects/[id]/sub-projects/[subId]/route": "app/api/projects/[id]/sub-projects/[subId]/route.js",
|
|
18
|
-
"/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/route.js",
|
|
19
|
-
"/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route.js",
|
|
20
18
|
"/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route.js",
|
|
19
|
+
"/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/route.js",
|
|
20
|
+
"/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route.js",
|
|
21
21
|
"/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route.js",
|
|
22
|
-
"/api/projects/route": "app/api/projects/route.js",
|
|
23
22
|
"/api/projects/[id]/sub-projects/[subId]/tasks/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/route.js",
|
|
24
|
-
"/api/projects/[id]/sub-projects/route": "app/api/projects/[id]/sub-projects/route.js",
|
|
25
|
-
"/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route.js",
|
|
26
|
-
"/api/sync/route": "app/api/sync/route.js",
|
|
23
|
+
"/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route": "app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route.js",
|
|
27
24
|
"/api/search/route": "app/api/search/route.js",
|
|
25
|
+
"/api/sync/route": "app/api/sync/route.js",
|
|
26
|
+
"/api/projects/route": "app/api/projects/route.js",
|
|
27
|
+
"/api/projects/[id]/sub-projects/route": "app/api/projects/[id]/sub-projects/route.js",
|
|
28
28
|
"/api/tasks/[taskId]/move/route": "app/api/tasks/[taskId]/move/route.js",
|
|
29
29
|
"/api/maintenance/route": "app/api/maintenance/route.js",
|
|
30
30
|
"/api/update/route": "app/api/update/route.js",
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(()=>{"use strict";var a,b,c,d,e={},f={};function g(a){var b=f[a];if(void 0!==b)return b.exports;var c=f[a]={exports:{}},d=!0;try{e[a](c,c.exports,g),d=!1}finally{d&&delete f[a]}return c.exports}g.m=e,g.amdO={},a=[],g.O=(b,c,d,e)=>{if(c){e=e||0;for(var f=a.length;f>0&&a[f-1][2]>e;f--)a[f]=a[f-1];a[f]=[c,d,e];return}for(var h=1/0,f=0;f<a.length;f++){for(var[c,d,e]=a[f],i=!0,j=0;j<c.length;j++)(!1&e||h>=e)&&Object.keys(g.O).every(a=>g.O[a](c[j]))?c.splice(j--,1):(i=!1,e<h&&(h=e));if(i){a.splice(f--,1);var k=d();void 0!==k&&(b=k)}}return b},g.n=a=>{var b=a&&a.__esModule?()=>a.default:()=>a;return g.d(b,{a:b}),b},g.d=(a,b)=>{for(var c in b)g.o(b,c)&&!g.o(a,c)&&Object.defineProperty(a,c,{enumerable:!0,get:b[c]})},g.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(a){if("object"==typeof window)return window}}(),g.o=(a,b)=>Object.prototype.hasOwnProperty.call(a,b),g.r=a=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},b={149:0},g.O.j=a=>0===b[a],c=(a,c)=>{var d,e,[f,h,i]=c,j=0;if(f.some(a=>0!==b[a])){for(d in h)g.o(h,d)&&(g.m[d]=h[d]);if(i)var k=i(g)}for(a&&a(c);j<f.length;j++)e=f[j],g.o(b,e)&&b[e]&&b[e][0](),b[e]=0;return g.O(k)},(d=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),d.push=c.bind(null,d.push.bind(d))})();
|
|
2
|
+
//# sourceMappingURL=edge-runtime-webpack.js.map
|