idea-manager 1.9.0 → 2.1.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 (185) hide show
  1. package/.next/build-manifest.json +2 -2
  2. package/.next/routes-manifest.json +35 -0
  3. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  4. package/.next/server/app/_global-error.html +2 -2
  5. package/.next/server/app/_global-error.rsc +1 -1
  6. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_not-found.html +2 -2
  14. package/.next/server/app/_not-found.rsc +2 -2
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/.next/server/app/api/advisor-actions/route.js +15 -0
  22. package/.next/server/app/api/advisor-actions/route_client-reference-manifest.js +1 -0
  23. package/.next/server/app/api/archive/route.js +1 -122
  24. package/.next/server/app/api/archive/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/filesystem/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/filesystem/tree/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/global-advisor/route.js +37 -0
  28. package/.next/server/app/api/global-advisor/route_client-reference-manifest.js +1 -0
  29. package/.next/server/app/api/global-memo/route.js +8 -0
  30. package/.next/server/app/api/global-memo/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/maintenance/route.js +130 -0
  33. package/.next/server/app/api/maintenance/route_client-reference-manifest.js +1 -0
  34. package/.next/server/app/api/projects/[id]/advisor/route.js +22 -11
  35. package/.next/server/app/api/projects/[id]/advisor/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/projects/[id]/apply-distribute/route.js +2 -8
  37. package/.next/server/app/api/projects/[id]/apply-distribute/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/projects/[id]/auto-distribute/route.js +126 -3
  39. package/.next/server/app/api/projects/[id]/auto-distribute/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/projects/[id]/brainstorm/route.js +124 -1
  41. package/.next/server/app/api/projects/[id]/brainstorm/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/projects/[id]/git-sync/route.js +124 -1
  43. package/.next/server/app/api/projects/[id]/git-sync/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/projects/[id]/route.js +124 -1
  45. package/.next/server/app/api/projects/[id]/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/route.js +8 -0
  47. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route.js +1 -7
  49. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route.js +8 -0
  51. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route.js +2 -8
  53. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/route.js +1 -122
  55. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route.js +124 -0
  57. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route_client-reference-manifest.js +1 -0
  58. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/route.js +1 -122
  59. package/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/projects/[id]/sub-projects/route.js +8 -0
  61. package/.next/server/app/api/projects/[id]/sub-projects/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/projects/route.js +124 -1
  63. package/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/search/route.js +8 -0
  65. package/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/sync/route.js +8 -0
  67. package/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/tasks/[taskId]/move/route.js +15 -0
  69. package/.next/server/app/api/tasks/[taskId]/move/route_client-reference-manifest.js +1 -0
  70. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/index.html +2 -2
  73. package/.next/server/app/index.rsc +3 -3
  74. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  75. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  76. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  77. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  78. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  79. package/.next/server/app/page.js +12 -12
  80. package/.next/server/app/page_client-reference-manifest.js +1 -1
  81. package/.next/server/app/projects/[id]/page_client-reference-manifest.js +1 -1
  82. package/.next/server/app-paths-manifest.json +18 -13
  83. package/.next/server/chunks/{117.js → 697.js} +16 -2
  84. package/.next/server/pages/404.html +2 -2
  85. package/.next/server/pages/500.html +2 -2
  86. package/.next/static/KREG104cVn2mBTMPTDTvH/_buildManifest.js +1 -0
  87. package/.next/static/chunks/374-23189d7e246ad164.js +1 -0
  88. package/.next/static/chunks/app/_global-error/page-f051f234bea7bddd.js +1 -0
  89. package/.next/static/chunks/app/api/advisor-actions/route-f051f234bea7bddd.js +1 -0
  90. package/.next/static/chunks/app/api/archive/route-f051f234bea7bddd.js +1 -0
  91. package/.next/static/chunks/app/api/filesystem/route-f051f234bea7bddd.js +1 -0
  92. package/.next/static/chunks/app/api/filesystem/tree/route-f051f234bea7bddd.js +1 -0
  93. package/.next/static/chunks/app/api/global-advisor/route-f051f234bea7bddd.js +1 -0
  94. package/.next/static/chunks/app/api/global-memo/route-f051f234bea7bddd.js +1 -0
  95. package/.next/static/chunks/app/api/health/route-f051f234bea7bddd.js +1 -0
  96. package/.next/static/chunks/app/api/maintenance/route-f051f234bea7bddd.js +1 -0
  97. package/.next/static/chunks/app/api/projects/[id]/advisor/route-f051f234bea7bddd.js +1 -0
  98. package/.next/static/chunks/app/api/projects/[id]/apply-distribute/route-f051f234bea7bddd.js +1 -0
  99. package/.next/static/chunks/app/api/projects/[id]/auto-distribute/route-f051f234bea7bddd.js +1 -0
  100. package/.next/static/chunks/app/api/projects/[id]/brainstorm/route-f051f234bea7bddd.js +1 -0
  101. package/.next/static/chunks/app/api/projects/[id]/git-sync/route-f051f234bea7bddd.js +1 -0
  102. package/.next/static/chunks/app/api/projects/[id]/route-f051f234bea7bddd.js +1 -0
  103. package/.next/static/chunks/app/api/projects/[id]/sub-projects/[subId]/route-f051f234bea7bddd.js +1 -0
  104. package/.next/static/chunks/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route-f051f234bea7bddd.js +1 -0
  105. package/.next/static/chunks/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route-f051f234bea7bddd.js +1 -0
  106. package/.next/static/chunks/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route-f051f234bea7bddd.js +1 -0
  107. package/.next/static/chunks/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/route-f051f234bea7bddd.js +1 -0
  108. package/.next/static/chunks/app/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route-f051f234bea7bddd.js +1 -0
  109. package/.next/static/chunks/app/api/projects/[id]/sub-projects/[subId]/tasks/route-f051f234bea7bddd.js +1 -0
  110. package/.next/static/chunks/app/api/projects/[id]/sub-projects/route-f051f234bea7bddd.js +1 -0
  111. package/.next/static/chunks/app/api/projects/route-f051f234bea7bddd.js +1 -0
  112. package/.next/static/chunks/app/api/search/route-f051f234bea7bddd.js +1 -0
  113. package/.next/static/chunks/app/api/sync/route-f051f234bea7bddd.js +1 -0
  114. package/.next/static/chunks/app/api/tasks/[taskId]/move/route-f051f234bea7bddd.js +1 -0
  115. package/.next/static/chunks/app/api/update/route-f051f234bea7bddd.js +1 -0
  116. package/.next/static/chunks/app/api/version/route-f051f234bea7bddd.js +1 -0
  117. package/.next/static/chunks/app/page-9117037f2947f4f6.js +28 -0
  118. package/.next/static/chunks/next/dist/client/components/builtin/app-error-f051f234bea7bddd.js +1 -0
  119. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-f051f234bea7bddd.js +1 -0
  120. package/.next/static/chunks/next/dist/client/components/builtin/not-found-f051f234bea7bddd.js +1 -0
  121. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-f051f234bea7bddd.js +1 -0
  122. package/.next/static/css/e9071b58a99b47e4.css +3 -0
  123. package/package.json +1 -1
  124. package/src/app/api/advisor-actions/route.ts +52 -0
  125. package/src/app/api/global-advisor/route.ts +50 -0
  126. package/src/app/api/maintenance/route.ts +36 -0
  127. package/src/app/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route.ts +24 -0
  128. package/src/app/api/tasks/[taskId]/move/route.ts +30 -0
  129. package/src/components/advisor/ActionBlock.tsx +124 -0
  130. package/src/components/advisor/AdvisorChat.tsx +175 -0
  131. package/src/components/advisor/GlobalAdvisorLayer.tsx +38 -0
  132. package/src/components/dashboard/DashboardPanel.tsx +2 -0
  133. package/src/components/memo/GlobalMemoLayer.tsx +81 -0
  134. package/src/components/tabs/TabBar.tsx +2 -0
  135. package/src/components/tabs/TabShell.tsx +6 -0
  136. package/src/components/task/NoteEditor.tsx +137 -0
  137. package/src/components/task/ProjectTree.tsx +105 -57
  138. package/src/components/task/TaskChat.tsx +4 -0
  139. package/src/components/task/TaskDetail.tsx +182 -1
  140. package/src/components/ui/AiActivityIndicator.tsx +66 -0
  141. package/src/components/ui/ShortcutOverlay.tsx +108 -0
  142. package/src/components/workspace/ProjectAdvisor.tsx +17 -181
  143. package/src/components/workspace/WorkspacePanel.tsx +75 -3
  144. package/src/hooks/useAiActivity.ts +6 -0
  145. package/src/lib/advisor-actions/parse.ts +59 -0
  146. package/src/lib/ai/global-context.ts +114 -0
  147. package/src/lib/ai/project-context.ts +22 -2
  148. package/src/lib/ai-activity.ts +33 -0
  149. package/src/lib/db/queries/global-conversations.ts +31 -0
  150. package/src/lib/db/queries/tasks.ts +3 -1
  151. package/src/lib/db/schema.ts +8 -0
  152. package/src/types/advisor-actions.ts +25 -0
  153. package/.next/static/chunks/374-769431701aab500f.js +0 -1
  154. package/.next/static/chunks/app/_global-error/page-3ff8f59aaa75b8f8.js +0 -1
  155. package/.next/static/chunks/app/api/archive/route-3ff8f59aaa75b8f8.js +0 -1
  156. package/.next/static/chunks/app/api/filesystem/route-3ff8f59aaa75b8f8.js +0 -1
  157. package/.next/static/chunks/app/api/filesystem/tree/route-3ff8f59aaa75b8f8.js +0 -1
  158. package/.next/static/chunks/app/api/global-memo/route-3ff8f59aaa75b8f8.js +0 -1
  159. package/.next/static/chunks/app/api/health/route-3ff8f59aaa75b8f8.js +0 -1
  160. package/.next/static/chunks/app/api/projects/[id]/advisor/route-3ff8f59aaa75b8f8.js +0 -1
  161. package/.next/static/chunks/app/api/projects/[id]/apply-distribute/route-3ff8f59aaa75b8f8.js +0 -1
  162. package/.next/static/chunks/app/api/projects/[id]/auto-distribute/route-3ff8f59aaa75b8f8.js +0 -1
  163. package/.next/static/chunks/app/api/projects/[id]/brainstorm/route-3ff8f59aaa75b8f8.js +0 -1
  164. package/.next/static/chunks/app/api/projects/[id]/git-sync/route-3ff8f59aaa75b8f8.js +0 -1
  165. package/.next/static/chunks/app/api/projects/[id]/route-3ff8f59aaa75b8f8.js +0 -1
  166. package/.next/static/chunks/app/api/projects/[id]/sub-projects/[subId]/route-3ff8f59aaa75b8f8.js +0 -1
  167. package/.next/static/chunks/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route-3ff8f59aaa75b8f8.js +0 -1
  168. package/.next/static/chunks/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/prompt/route-3ff8f59aaa75b8f8.js +0 -1
  169. package/.next/static/chunks/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route-3ff8f59aaa75b8f8.js +0 -1
  170. package/.next/static/chunks/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/route-3ff8f59aaa75b8f8.js +0 -1
  171. package/.next/static/chunks/app/api/projects/[id]/sub-projects/[subId]/tasks/route-3ff8f59aaa75b8f8.js +0 -1
  172. package/.next/static/chunks/app/api/projects/[id]/sub-projects/route-3ff8f59aaa75b8f8.js +0 -1
  173. package/.next/static/chunks/app/api/projects/route-3ff8f59aaa75b8f8.js +0 -1
  174. package/.next/static/chunks/app/api/search/route-3ff8f59aaa75b8f8.js +0 -1
  175. package/.next/static/chunks/app/api/sync/route-3ff8f59aaa75b8f8.js +0 -1
  176. package/.next/static/chunks/app/api/update/route-3ff8f59aaa75b8f8.js +0 -1
  177. package/.next/static/chunks/app/api/version/route-3ff8f59aaa75b8f8.js +0 -1
  178. package/.next/static/chunks/app/page-e935ee928da68ca2.js +0 -28
  179. package/.next/static/chunks/next/dist/client/components/builtin/app-error-3ff8f59aaa75b8f8.js +0 -1
  180. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-3ff8f59aaa75b8f8.js +0 -1
  181. package/.next/static/chunks/next/dist/client/components/builtin/not-found-3ff8f59aaa75b8f8.js +0 -1
  182. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-3ff8f59aaa75b8f8.js +0 -1
  183. package/.next/static/css/e4c7cd5a570312d9.css +0 -3
  184. package/.next/static/pxqzEiwniZAUDOUTb5SnX/_buildManifest.js +0 -1
  185. /package/.next/static/{pxqzEiwniZAUDOUTb5SnX → KREG104cVn2mBTMPTDTvH}/_ssgManifest.js +0 -0
@@ -0,0 +1,124 @@
1
+ (()=>{var a={};a.id=227,a.ids=[227],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},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")},4870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},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(`
2
+ CREATE TABLE IF NOT EXISTS projects (
3
+ id TEXT PRIMARY KEY,
4
+ name TEXT NOT NULL,
5
+ description TEXT NOT NULL DEFAULT '',
6
+ project_path TEXT,
7
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
8
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
9
+ );
10
+
11
+ CREATE TABLE IF NOT EXISTS brainstorms (
12
+ id TEXT PRIMARY KEY,
13
+ project_id TEXT NOT NULL,
14
+ content TEXT NOT NULL DEFAULT '',
15
+ version INTEGER NOT NULL DEFAULT 1,
16
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
17
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
18
+ FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
19
+ );
20
+
21
+ `);let b=a.prepare("PRAGMA table_info(projects)").all();b.some(a=>"project_path"===a.name)||a.exec("ALTER TABLE projects ADD COLUMN project_path TEXT"),b.some(a=>"ai_context"===a.name)||a.exec("ALTER TABLE projects ADD COLUMN ai_context TEXT NOT NULL DEFAULT ''"),b.some(a=>"watch_enabled"===a.name)||a.exec("ALTER TABLE projects ADD COLUMN watch_enabled INTEGER NOT NULL DEFAULT 0"),b.some(a=>"agent_type"===a.name)||a.exec("ALTER TABLE projects ADD COLUMN agent_type TEXT NOT NULL DEFAULT 'claude'"),a.exec(`
22
+ CREATE TABLE IF NOT EXISTS sub_projects (
23
+ id TEXT PRIMARY KEY,
24
+ project_id TEXT NOT NULL,
25
+ name TEXT NOT NULL,
26
+ description TEXT NOT NULL DEFAULT '',
27
+ folder_path TEXT,
28
+ sort_order INTEGER NOT NULL DEFAULT 0,
29
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
30
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
31
+ FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
32
+ );
33
+
34
+ CREATE TABLE IF NOT EXISTS tasks (
35
+ id TEXT PRIMARY KEY,
36
+ project_id TEXT NOT NULL,
37
+ sub_project_id TEXT NOT NULL,
38
+ title TEXT NOT NULL,
39
+ description TEXT NOT NULL DEFAULT '',
40
+ status TEXT NOT NULL DEFAULT 'idea'
41
+ CHECK(status IN ('idea','doing','writing','submitted','testing','done','problem')),
42
+ priority TEXT NOT NULL DEFAULT 'medium'
43
+ CHECK(priority IN ('high','medium','low')),
44
+ is_today INTEGER NOT NULL DEFAULT 0,
45
+ sort_order INTEGER NOT NULL DEFAULT 0,
46
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
47
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
48
+ FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
49
+ FOREIGN KEY (sub_project_id) REFERENCES sub_projects(id) ON DELETE CASCADE
50
+ );
51
+
52
+ CREATE TABLE IF NOT EXISTS task_prompts (
53
+ id TEXT PRIMARY KEY,
54
+ task_id TEXT NOT NULL UNIQUE,
55
+ content TEXT NOT NULL DEFAULT '',
56
+ prompt_type TEXT NOT NULL DEFAULT 'manual'
57
+ CHECK(prompt_type IN ('manual','ai_assisted')),
58
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
59
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
60
+ FOREIGN KEY (task_id) REFERENCES tasks(id) ON DELETE CASCADE
61
+ );
62
+
63
+ CREATE TABLE IF NOT EXISTS global_memos (
64
+ id TEXT PRIMARY KEY,
65
+ content TEXT NOT NULL DEFAULT '',
66
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
67
+ );
68
+
69
+ CREATE TABLE IF NOT EXISTS task_conversations (
70
+ id TEXT PRIMARY KEY,
71
+ task_id TEXT NOT NULL,
72
+ role TEXT NOT NULL CHECK(role IN ('assistant','user')),
73
+ content TEXT NOT NULL,
74
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
75
+ FOREIGN KEY (task_id) REFERENCES tasks(id) ON DELETE CASCADE
76
+ );
77
+ `),a.exec(`
78
+ CREATE TABLE IF NOT EXISTS global_conversations (
79
+ id TEXT PRIMARY KEY,
80
+ project_id TEXT NOT NULL DEFAULT '__global__',
81
+ role TEXT NOT NULL CHECK(role IN ('assistant','user','system')),
82
+ content TEXT NOT NULL,
83
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
84
+ );
85
+
86
+ CREATE TABLE IF NOT EXISTS project_conversations (
87
+ id TEXT PRIMARY KEY,
88
+ project_id TEXT NOT NULL,
89
+ role TEXT NOT NULL CHECK(role IN ('assistant','user','system')),
90
+ content TEXT NOT NULL,
91
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
92
+ FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
93
+ );
94
+ `);let c=a.prepare("PRAGMA table_info(tasks)").all();c.some(a=>"is_archived"===a.name)||a.exec("ALTER TABLE tasks ADD COLUMN is_archived INTEGER NOT NULL DEFAULT 0"),c.some(a=>"tags"===a.name)||a.exec("ALTER TABLE tasks ADD COLUMN tags TEXT NOT NULL DEFAULT '[]'");let d="\x3c!-- legacy-prompt --\x3e",e=a.prepare(`
95
+ SELECT tp.task_id AS task_id, tp.content AS content, t.description AS description
96
+ FROM task_prompts tp
97
+ JOIN tasks t ON t.id = tp.task_id
98
+ WHERE tp.content IS NOT NULL AND TRIM(tp.content) <> ''
99
+ AND (t.description IS NULL OR t.description NOT LIKE '%${d}%')
100
+ `).all();if(e.length>0){let b=a.prepare("UPDATE tasks SET description = ? WHERE id = ?");for(let a of e){let c=(a.description??"").trimEnd(),e=[c,c?"":null,c?"---":null,`${d}`,"**Legacy Prompt**","",a.content.trim()].filter(a=>null!==a).join("\n");b.run(e,a.task_id)}}let f=a.prepare("SELECT sql FROM sqlite_master WHERE type='table' AND name='tasks'").get();f&&!f.sql.includes("'doing'")&&a.exec(`
101
+ CREATE TABLE tasks_new (
102
+ id TEXT PRIMARY KEY,
103
+ project_id TEXT NOT NULL,
104
+ sub_project_id TEXT NOT NULL,
105
+ title TEXT NOT NULL,
106
+ description TEXT NOT NULL DEFAULT '',
107
+ status TEXT NOT NULL DEFAULT 'idea'
108
+ CHECK(status IN ('idea','doing','writing','submitted','testing','done','problem')),
109
+ priority TEXT NOT NULL DEFAULT 'medium'
110
+ CHECK(priority IN ('high','medium','low')),
111
+ is_today INTEGER NOT NULL DEFAULT 0,
112
+ sort_order INTEGER NOT NULL DEFAULT 0,
113
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
114
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
115
+ is_archived INTEGER NOT NULL DEFAULT 0,
116
+ tags TEXT NOT NULL DEFAULT '[]',
117
+ FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
118
+ FOREIGN KEY (sub_project_id) REFERENCES sub_projects(id) ON DELETE CASCADE
119
+ );
120
+ INSERT INTO tasks_new (id, project_id, sub_project_id, title, description, status, priority, is_today, sort_order, created_at, updated_at, is_archived, tags)
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
+ DROP TABLE tasks;
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}},5507:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>D,patchFetch:()=>C,routeModule:()=>y,serverHooks:()=>B,workAsyncStorage:()=>z,workUnitAsyncStorage:()=>A});var d={};c.r(d),c.d(d,{POST:()=>x});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);async function x(a,{params:b}){await (0,w.t)(),await b;let c=await a.json();if(!Array.isArray(c.orderedIds)||0===c.orderedIds.length)return v.NextResponse.json({error:"orderedIds array required"},{status:400});let d=(0,w.L)(),e=new Date().toISOString(),f=d.prepare("UPDATE tasks SET sort_order = ?, updated_at = ? WHERE id = ?");for(let a=0;a<c.orderedIds.length;a++)f.run(a,e,c.orderedIds[a]);return v.NextResponse.json({ok:!0})}let y=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route",pathname:"/api/projects/[id]/sub-projects/[subId]/tasks/reorder",filename:"route",bundlePath:"app/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route.ts",nextConfigOutput:"",userland:d}),{workAsyncStorage:z,workUnitAsyncStorage:A,serverHooks:B}=y;function C(){return(0,g.patchFetch)({workAsyncStorage:z,workUnitAsyncStorage:A})}async function D(a,b,c){y.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route";"/index"===d&&(d="/");let e=await y.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!e)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:g,params:v,nextConfig:w,parsedUrl:x,isDraftMode:z,prerenderManifest:A,routerServerContext:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(A.dynamicRoutes[H]||A.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!z){let a=!!A.routes[E],b=A.dynamicRoutes[H];if(b&&!1===b.fallback&&!a){if(w.experimental.adapterPath)return await J();throw new t.NoFallbackError}}let K=null;!I||y.isDev||z||(K="/index"===(K=E)?"/":K);let L=!0===y.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q={params:v,prerenderManifest:A,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)=>y.onRequestError(a,b,d,e,B)},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=>y.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&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await 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 y.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},l=await y.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,responseGenerator: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",C?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),z&&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 y.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(R,S,new Response(null,{status:500})),null}}},6439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},6487:()=>{},8335:()=>{},9021:a=>{"use strict";a.exports=require("fs")},9294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},9661:a=>{"use strict";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],()=>b(b.s=5507));module.exports=c})();
@@ -0,0 +1 @@
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route"]={"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-9117037f2947f4f6.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/e9071b58a99b47e4.css"}],"/Users/young/Toy/idea-manager/src/app/page":[],"/Users/young/Toy/idea-manager/src/app/api/projects/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/[subId]/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/[subId]/tasks/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/[subId]/tasks/reorder/route":[]},"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,122 +1 @@
1
- (()=>{var a={};a.id=175,a.ids=[175],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},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")},2348:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>F,patchFetch:()=>E,routeModule:()=>A,serverHooks:()=>D,workAsyncStorage:()=>B,workUnitAsyncStorage:()=>C});var d={};c.r(d),c.d(d,{GET:()=>y,POST:()=>z});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(5440);async function y(a,{params:b}){await (0,x.t)();let{subId:c}=await b,d=(0,w.x1)(c);return v.NextResponse.json(d)}async function z(a,{params:b}){await (0,x.t)();let{id:c,subId:d}=await b,e=await a.json();if(!e.title||"string"!=typeof e.title)return v.NextResponse.json({error:"title is required"},{status:400});let f=(0,w.UT)({project_id:c,sub_project_id:d,title:e.title,description:e.description,status:e.status,priority:e.priority});return v.NextResponse.json(f,{status:201})}let A=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/projects/[id]/sub-projects/[subId]/tasks/route",pathname:"/api/projects/[id]/sub-projects/[subId]/tasks",filename:"route",bundlePath:"app/api/projects/[id]/sub-projects/[subId]/tasks/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/[subId]/tasks/route.ts",nextConfigOutput:"",userland:d}),{workAsyncStorage:B,workUnitAsyncStorage:C,serverHooks:D}=A;function E(){return(0,g.patchFetch)({workAsyncStorage:B,workUnitAsyncStorage:C})}async function F(a,b,c){A.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/projects/[id]/sub-projects/[subId]/tasks/route";"/index"===d&&(d="/");let e=await A.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:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(z.dynamicRoutes[H]||z.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!z.routes[E],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||A.isDev||y||(K="/index"===(K=E)?"/":K);let L=!0===A.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q={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)=>A.onRequestError(a,b,d,e,B)},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=>A.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&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await 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 A.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},l=await A.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,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",C?"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 A.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(R,S,new Response(null,{status:500})),null}}},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")},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:()=>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(`
2
- CREATE TABLE IF NOT EXISTS projects (
3
- id TEXT PRIMARY KEY,
4
- name TEXT NOT NULL,
5
- description TEXT NOT NULL DEFAULT '',
6
- project_path TEXT,
7
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
8
- updated_at TEXT NOT NULL DEFAULT (datetime('now'))
9
- );
10
-
11
- CREATE TABLE IF NOT EXISTS brainstorms (
12
- id TEXT PRIMARY KEY,
13
- project_id TEXT NOT NULL,
14
- content TEXT NOT NULL DEFAULT '',
15
- version INTEGER NOT NULL DEFAULT 1,
16
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
17
- updated_at TEXT NOT NULL DEFAULT (datetime('now')),
18
- FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
19
- );
20
-
21
- `);let b=a.prepare("PRAGMA table_info(projects)").all();b.some(a=>"project_path"===a.name)||a.exec("ALTER TABLE projects ADD COLUMN project_path TEXT"),b.some(a=>"ai_context"===a.name)||a.exec("ALTER TABLE projects ADD COLUMN ai_context TEXT NOT NULL DEFAULT ''"),b.some(a=>"watch_enabled"===a.name)||a.exec("ALTER TABLE projects ADD COLUMN watch_enabled INTEGER NOT NULL DEFAULT 0"),b.some(a=>"agent_type"===a.name)||a.exec("ALTER TABLE projects ADD COLUMN agent_type TEXT NOT NULL DEFAULT 'claude'"),a.exec(`
22
- CREATE TABLE IF NOT EXISTS sub_projects (
23
- id TEXT PRIMARY KEY,
24
- project_id TEXT NOT NULL,
25
- name TEXT NOT NULL,
26
- description TEXT NOT NULL DEFAULT '',
27
- folder_path TEXT,
28
- sort_order INTEGER NOT NULL DEFAULT 0,
29
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
30
- updated_at TEXT NOT NULL DEFAULT (datetime('now')),
31
- FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
32
- );
33
-
34
- CREATE TABLE IF NOT EXISTS tasks (
35
- id TEXT PRIMARY KEY,
36
- project_id TEXT NOT NULL,
37
- sub_project_id TEXT NOT NULL,
38
- title TEXT NOT NULL,
39
- description TEXT NOT NULL DEFAULT '',
40
- status TEXT NOT NULL DEFAULT 'idea'
41
- CHECK(status IN ('idea','doing','writing','submitted','testing','done','problem')),
42
- priority TEXT NOT NULL DEFAULT 'medium'
43
- CHECK(priority IN ('high','medium','low')),
44
- is_today INTEGER NOT NULL DEFAULT 0,
45
- sort_order INTEGER NOT NULL DEFAULT 0,
46
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
47
- updated_at TEXT NOT NULL DEFAULT (datetime('now')),
48
- FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
49
- FOREIGN KEY (sub_project_id) REFERENCES sub_projects(id) ON DELETE CASCADE
50
- );
51
-
52
- CREATE TABLE IF NOT EXISTS task_prompts (
53
- id TEXT PRIMARY KEY,
54
- task_id TEXT NOT NULL UNIQUE,
55
- content TEXT NOT NULL DEFAULT '',
56
- prompt_type TEXT NOT NULL DEFAULT 'manual'
57
- CHECK(prompt_type IN ('manual','ai_assisted')),
58
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
59
- updated_at TEXT NOT NULL DEFAULT (datetime('now')),
60
- FOREIGN KEY (task_id) REFERENCES tasks(id) ON DELETE CASCADE
61
- );
62
-
63
- CREATE TABLE IF NOT EXISTS global_memos (
64
- id TEXT PRIMARY KEY,
65
- content TEXT NOT NULL DEFAULT '',
66
- updated_at TEXT NOT NULL DEFAULT (datetime('now'))
67
- );
68
-
69
- CREATE TABLE IF NOT EXISTS task_conversations (
70
- id TEXT PRIMARY KEY,
71
- task_id TEXT NOT NULL,
72
- role TEXT NOT NULL CHECK(role IN ('assistant','user')),
73
- content TEXT NOT NULL,
74
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
75
- FOREIGN KEY (task_id) REFERENCES tasks(id) ON DELETE CASCADE
76
- );
77
- `),a.exec(`
78
- CREATE TABLE IF NOT EXISTS project_conversations (
79
- id TEXT PRIMARY KEY,
80
- project_id TEXT NOT NULL,
81
- role TEXT NOT NULL CHECK(role IN ('assistant','user','system')),
82
- content TEXT NOT NULL,
83
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
84
- FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
85
- );
86
- `);let c=a.prepare("PRAGMA table_info(tasks)").all();c.some(a=>"is_archived"===a.name)||a.exec("ALTER TABLE tasks ADD COLUMN is_archived INTEGER NOT NULL DEFAULT 0"),c.some(a=>"tags"===a.name)||a.exec("ALTER TABLE tasks ADD COLUMN tags TEXT NOT NULL DEFAULT '[]'");let d="\x3c!-- legacy-prompt --\x3e",e=a.prepare(`
87
- SELECT tp.task_id AS task_id, tp.content AS content, t.description AS description
88
- FROM task_prompts tp
89
- JOIN tasks t ON t.id = tp.task_id
90
- WHERE tp.content IS NOT NULL AND TRIM(tp.content) <> ''
91
- AND (t.description IS NULL OR t.description NOT LIKE '%${d}%')
92
- `).all();if(e.length>0){let b=a.prepare("UPDATE tasks SET description = ? WHERE id = ?");for(let a of e){let c=(a.description??"").trimEnd(),e=[c,c?"":null,c?"---":null,`${d}`,"**Legacy Prompt**","",a.content.trim()].filter(a=>null!==a).join("\n");b.run(e,a.task_id)}}let f=a.prepare("SELECT sql FROM sqlite_master WHERE type='table' AND name='tasks'").get();f&&!f.sql.includes("'doing'")&&a.exec(`
93
- CREATE TABLE tasks_new (
94
- id TEXT PRIMARY KEY,
95
- project_id TEXT NOT NULL,
96
- sub_project_id TEXT NOT NULL,
97
- title TEXT NOT NULL,
98
- description TEXT NOT NULL DEFAULT '',
99
- status TEXT NOT NULL DEFAULT 'idea'
100
- CHECK(status IN ('idea','doing','writing','submitted','testing','done','problem')),
101
- priority TEXT NOT NULL DEFAULT 'medium'
102
- CHECK(priority IN ('high','medium','low')),
103
- is_today INTEGER NOT NULL DEFAULT 0,
104
- sort_order INTEGER NOT NULL DEFAULT 0,
105
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
106
- updated_at TEXT NOT NULL DEFAULT (datetime('now')),
107
- is_archived INTEGER NOT NULL DEFAULT 0,
108
- tags TEXT NOT NULL DEFAULT '[]',
109
- FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
110
- FOREIGN KEY (sub_project_id) REFERENCES sub_projects(id) ON DELETE CASCADE
111
- );
112
- INSERT INTO tasks_new (id, project_id, sub_project_id, title, description, status, priority, is_today, sort_order, created_at, updated_at, is_archived, tags)
113
- SELECT id, project_id, sub_project_id, title, description, status, priority, is_today, sort_order, created_at, updated_at, is_archived, tags FROM tasks;
114
- DROP TABLE tasks;
115
- ALTER TABLE tasks_new RENAME TO tasks;
116
- `)}(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}},6439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},6487:()=>{},7598:a=>{"use strict";a.exports=require("node:crypto")},8335:()=>{},9021:a=>{"use strict";a.exports=require("fs")},9294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},9661:a=>{"use strict";a.exports=require("sql.js/dist/sql-wasm.js")},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)
117
- 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(`
118
- UPDATE tasks SET
119
- title = ?, description = ?, status = ?, priority = ?,
120
- is_today = ?, sort_order = ?, sub_project_id = ?, tags = ?, updated_at = ?
121
- WHERE id = ?
122
- `).run(b.title??e.title,b.description??e.description,b.status??e.status,b.priority??e.priority,void 0!==b.is_today?+!!b.is_today:e.is_today,b.sort_order??e.sort_order,b.sub_project_id??e.sub_project_id,b.tags?JSON.stringify(b.tags):e.tags,f,a),h(a)}function o(a){return(0,d.L)().prepare("DELETE FROM tasks WHERE id = ?").run(a).changes>0}}};var b=require("../../../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[445,813],()=>b(b.s=2348));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=175,a.ids=[175],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},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")},2348:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>F,patchFetch:()=>E,routeModule:()=>A,serverHooks:()=>D,workAsyncStorage:()=>B,workUnitAsyncStorage:()=>C});var d={};c.r(d),c.d(d,{GET:()=>y,POST:()=>z});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(5440);async function y(a,{params:b}){await (0,x.t)();let{subId:c}=await b,d=(0,w.x1)(c);return v.NextResponse.json(d)}async function z(a,{params:b}){await (0,x.t)();let{id:c,subId:d}=await b,e=await a.json();if(!e.title||"string"!=typeof e.title)return v.NextResponse.json({error:"title is required"},{status:400});let f=(0,w.UT)({project_id:c,sub_project_id:d,title:e.title,description:e.description,status:e.status,priority:e.priority});return v.NextResponse.json(f,{status:201})}let A=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/projects/[id]/sub-projects/[subId]/tasks/route",pathname:"/api/projects/[id]/sub-projects/[subId]/tasks",filename:"route",bundlePath:"app/api/projects/[id]/sub-projects/[subId]/tasks/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/[subId]/tasks/route.ts",nextConfigOutput:"",userland:d}),{workAsyncStorage:B,workUnitAsyncStorage:C,serverHooks:D}=A;function E(){return(0,g.patchFetch)({workAsyncStorage:B,workUnitAsyncStorage:C})}async function F(a,b,c){A.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/projects/[id]/sub-projects/[subId]/tasks/route";"/index"===d&&(d="/");let e=await A.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:B,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,resolvedPathname:E,clientReferenceManifest:F,serverActionsManifest:G}=e,H=(0,k.normalizeAppPath)(d),I=!!(z.dynamicRoutes[H]||z.routes[E]),J=async()=>((null==B?void 0:B.render404)?await B.render404(a,b,x,!1):b.end("This page could not be found"),null);if(I&&!y){let a=!!z.routes[E],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||A.isDev||y||(K="/index"===(K=E)?"/":K);let L=!0===A.isDev||!I,M=I&&!L;G&&F&&(0,j.setManifestsSingleton)({page:d,clientReferenceManifest:F,serverActionsManifest:G});let N=a.method||"GET",O=(0,i.getTracer)(),P=O.getActiveScopeSpan(),Q={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)=>A.onRequestError(a,b,d,e,B)},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=>A.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&&C&&D&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await 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 A.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),b}},l=await A.handleResponse({req:a,nextConfig:w,cacheKey:K,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:D,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",C?"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 A.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,o.c)({isStaticGeneration:M,isOnDemandRevalidate:C})},!1,B),I)throw b;return await (0,p.I)(R,S,new Response(null,{status:500})),null}}},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")},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=2348));module.exports=c})();
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/projects/[id]/sub-projects/[subId]/tasks/route"]={"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}},"9768":{"*":{"id":"3543","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":9768,"name":"*","chunks":["79","static/chunks/363642f4-9eb39e0bc542c65b.js","374","static/chunks/374-769431701aab500f.js","974","static/chunks/app/page-e935ee928da68ca2.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/e4c7cd5a570312d9.css"}],"/Users/young/Toy/idea-manager/src/app/page":[],"/Users/young/Toy/idea-manager/src/app/api/projects/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/[subId]/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/[subId]/tasks/route":[]},"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}},"9768":{"*":{"id":"4494","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/projects/[id]/sub-projects/[subId]/tasks/route"]={"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-9117037f2947f4f6.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/e9071b58a99b47e4.css"}],"/Users/young/Toy/idea-manager/src/app/page":[],"/Users/young/Toy/idea-manager/src/app/api/projects/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/[subId]/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/[subId]/tasks/route":[]},"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":{}}
@@ -75,6 +75,14 @@
75
75
  FOREIGN KEY (task_id) REFERENCES tasks(id) ON DELETE CASCADE
76
76
  );
77
77
  `),a.exec(`
78
+ CREATE TABLE IF NOT EXISTS global_conversations (
79
+ id TEXT PRIMARY KEY,
80
+ project_id TEXT NOT NULL DEFAULT '__global__',
81
+ role TEXT NOT NULL CHECK(role IN ('assistant','user','system')),
82
+ content TEXT NOT NULL,
83
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
84
+ );
85
+
78
86
  CREATE TABLE IF NOT EXISTS project_conversations (
79
87
  id TEXT PRIMARY KEY,
80
88
  project_id TEXT NOT NULL,
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/projects/[id]/sub-projects/route"]={"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}},"9768":{"*":{"id":"3543","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":9768,"name":"*","chunks":["79","static/chunks/363642f4-9eb39e0bc542c65b.js","374","static/chunks/374-769431701aab500f.js","974","static/chunks/app/page-e935ee928da68ca2.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/e4c7cd5a570312d9.css"}],"/Users/young/Toy/idea-manager/src/app/page":[],"/Users/young/Toy/idea-manager/src/app/api/projects/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/route":[]},"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}},"9768":{"*":{"id":"4494","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/projects/[id]/sub-projects/route"]={"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-9117037f2947f4f6.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/e9071b58a99b47e4.css"}],"/Users/young/Toy/idea-manager/src/app/page":[],"/Users/young/Toy/idea-manager/src/app/api/projects/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/route":[],"/Users/young/Toy/idea-manager/src/app/api/projects/[id]/sub-projects/route":[]},"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":{}}