@minimalcorp/tsunagi 0.3.3 → 0.4.2

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 (182) hide show
  1. package/.next/standalone/apps/web/.next/BUILD_ID +1 -1
  2. package/.next/standalone/apps/web/.next/build-manifest.json +3 -3
  3. package/.next/standalone/apps/web/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/apps/web/.next/server/app/_global-error.html +1 -1
  5. package/.next/standalone/apps/web/.next/server/app/_global-error.rsc +1 -1
  6. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
  13. package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +2 -2
  14. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  15. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  17. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  20. package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
  21. package/.next/standalone/apps/web/.next/server/app/index.rsc +3 -3
  22. package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  23. package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +3 -3
  24. package/.next/standalone/apps/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
  25. package/.next/standalone/apps/web/.next/server/app/index.segments/_index.segment.rsc +2 -2
  26. package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  27. package/.next/standalone/apps/web/.next/server/app/page.js.nft.json +1 -1
  28. package/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/apps/web/.next/server/app/settings/page.js.nft.json +1 -1
  30. package/.next/standalone/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
  32. package/.next/standalone/apps/web/.next/server/app/settings.rsc +3 -3
  33. package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  34. package/.next/standalone/apps/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  35. package/.next/standalone/apps/web/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  36. package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  37. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  38. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  39. package/.next/standalone/apps/web/.next/server/app/tasks/[id]/page.js.nft.json +1 -1
  40. package/.next/standalone/apps/web/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0qjafjt._.js +1 -1
  42. package/.next/standalone/apps/web/.next/server/chunks/ssr/{_13w5ytx._.js → _01~tp-i._.js} +2 -2
  43. package/.next/standalone/apps/web/.next/server/chunks/ssr/{_0kflgfj._.js → _03lm.~7._.js} +3 -3
  44. package/.next/standalone/apps/web/.next/server/chunks/ssr/{_0g79jqo._.js → _09br4yx._.js} +3 -3
  45. package/.next/standalone/apps/web/.next/server/chunks/ssr/_0g.cd6a._.js +2 -2
  46. package/.next/standalone/apps/web/.next/server/chunks/ssr/_0h-u~an._.js +7 -0
  47. package/.next/standalone/apps/web/.next/server/chunks/ssr/{_139_l.u._.js → _0kkt7a_._.js} +2 -2
  48. package/.next/standalone/apps/web/.next/server/chunks/ssr/_0ts4rpp._.js +3 -0
  49. package/.next/standalone/apps/web/.next/server/chunks/ssr/_13ne7ej._.js +3 -0
  50. package/.next/standalone/apps/web/.next/server/chunks/ssr/apps_web_src_app_settings_page_tsx_0i6itlb._.js +1 -3
  51. package/.next/standalone/apps/web/.next/server/chunks/ssr/apps_web_src_app_tasks_[id]_page_tsx_0jshsm2._.js +3 -3
  52. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0cv326~._.js → node_modules_06jdmu~._.js} +1 -1
  53. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0h.vgyn._.js → node_modules_0ac2-~z._.js} +1 -1
  54. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0sn0lqb._.js → node_modules_0gglkx9._.js} +1 -1
  55. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0tod6y8._.js → node_modules_0h4h_aw._.js} +1 -1
  56. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0q_5qo~._.js → node_modules_0i5v48e._.js} +1 -1
  57. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_09d2oqj._.js → node_modules_0k3x6_w._.js} +1 -1
  58. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0oip5a1._.js → node_modules_0q8yuvq._.js} +1 -1
  59. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0npujym._.js → node_modules_0rnsluy._.js} +1 -1
  60. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0krwgny._.js → node_modules_0t-jssg._.js} +1 -1
  61. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0l23gkf._.js → node_modules_0t6ysh_._.js} +1 -1
  62. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_11-z65a._.js → node_modules_0ut2-yw._.js} +1 -1
  63. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0_huoqd._.js → node_modules_0vq~hzy._.js} +1 -1
  64. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0a57phw._.js → node_modules_0w6fm3f._.js} +2 -2
  65. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0xp9nhx._.js → node_modules_0yb2sh9._.js} +1 -1
  66. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0q_xfyl._.js → node_modules_0yc~s8p._.js} +1 -1
  67. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0ak_3rk._.js → node_modules_0zi0w9_._.js} +1 -1
  68. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_04pfam-._.js → node_modules_0zzdoud._.js} +1 -1
  69. package/.next/standalone/apps/web/.next/server/chunks/ssr/{_0w2dm3r._.js → node_modules_lucide-react_dist_esm_icons_0zerlct._.js} +2 -2
  70. package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
  71. package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  72. package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  73. package/.next/standalone/apps/web/.next/server/server-reference-manifest.js +1 -1
  74. package/.next/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
  75. package/.next/standalone/apps/web/.next/static/chunks/{0l83q95s~tih4.js → 08s3o7outb~0z.js} +1 -1
  76. package/.next/standalone/apps/web/.next/static/chunks/0a2u28f44p7t..js +1 -0
  77. package/.next/standalone/apps/web/.next/static/chunks/{0oricprxoxb_d.js → 0ae7zmpe8063z.js} +10 -10
  78. package/.next/standalone/apps/web/.next/static/chunks/0dgu~u-1e5b7-.js +5 -0
  79. package/.next/standalone/apps/web/.next/static/chunks/{0whl1y16cvn5q.js → 0e8u7rqrqfiiy.js} +1 -1
  80. package/.next/standalone/apps/web/.next/static/chunks/{0z60ewb40i2ce.js → 0gxhy80~c0gvp.js} +1 -1
  81. package/.next/standalone/apps/web/.next/static/chunks/0n72w4sxrwoj4.js +5 -0
  82. package/.next/standalone/apps/web/.next/static/chunks/0o1bh_qwdvmid.css +4 -0
  83. package/.next/standalone/apps/web/.next/static/chunks/{17~93fal1fw_d.js → 0uugzgqr-ug3_.js} +1 -1
  84. package/.next/standalone/apps/web/.next/static/chunks/{149sia28cskw9.js → 0yp~t_.pozr-d.js} +6 -6
  85. package/.next/standalone/apps/web/.next/static/chunks/0ysgl4vmer~v5.js +6 -0
  86. package/.next/standalone/apps/web/.next/static/chunks/{053h220fng_68.js → 11u7x4ic4~mp3.js} +10 -10
  87. package/.next/standalone/apps/web/.next/static/chunks/13_9zaka0bif_.js +1 -0
  88. package/.next/standalone/apps/web/package.json +1 -3
  89. package/README.md +1 -1
  90. package/dist/app.js +3 -4
  91. package/dist/plugin-lifecycle.d.ts +5 -3
  92. package/dist/plugin-lifecycle.js +40 -16
  93. package/dist/prisma/migrations/20261011000000_add_codex_support/migration.sql +20 -0
  94. package/dist/prisma/schema.prisma +9 -5
  95. package/dist/server/generated/prisma/browser.d.ts +2 -2
  96. package/dist/server/generated/prisma/client.d.ts +2 -2
  97. package/dist/server/generated/prisma/internal/class.d.ts +4 -4
  98. package/dist/server/generated/prisma/internal/class.js +4 -4
  99. package/dist/server/generated/prisma/internal/prismaNamespace.d.ts +41 -39
  100. package/dist/server/generated/prisma/internal/prismaNamespace.js +4 -2
  101. package/dist/server/generated/prisma/internal/prismaNamespaceBrowser.d.ts +5 -3
  102. package/dist/server/generated/prisma/internal/prismaNamespaceBrowser.js +4 -2
  103. package/dist/server/generated/prisma/models/AgentProfile.d.ts +972 -0
  104. package/dist/server/generated/prisma/models/Tab.d.ts +36 -1
  105. package/dist/server/generated/prisma/models.d.ts +1 -1
  106. package/dist/server/index.js +2 -7
  107. package/dist/server/lib/agent-profiles.d.ts +44 -0
  108. package/dist/server/lib/agent-profiles.js +130 -0
  109. package/dist/server/lib/agents/claude.d.ts +2 -0
  110. package/dist/server/lib/agents/claude.js +130 -0
  111. package/dist/server/lib/agents/cli.d.ts +14 -0
  112. package/dist/server/lib/agents/cli.js +57 -0
  113. package/dist/server/lib/agents/codex.d.ts +2 -0
  114. package/dist/server/lib/agents/codex.js +285 -0
  115. package/dist/server/lib/agents/index.d.ts +11 -0
  116. package/dist/server/lib/agents/index.js +19 -0
  117. package/dist/server/lib/agents/login-callback.d.ts +11 -0
  118. package/dist/server/lib/agents/login-callback.js +47 -0
  119. package/dist/server/lib/agents/types.d.ts +77 -0
  120. package/dist/server/lib/agents/types.js +8 -0
  121. package/dist/server/lib/pty-env-sync.js +1 -1
  122. package/dist/server/lib/pty-launch.d.ts +8 -10
  123. package/dist/server/lib/pty-launch.js +20 -58
  124. package/dist/server/lib/repositories/task.js +1 -0
  125. package/dist/server/lib/tab-todos.d.ts +5 -0
  126. package/dist/server/lib/tab-todos.js +13 -0
  127. package/dist/server/pty-manager.d.ts +7 -2
  128. package/dist/server/pty-manager.js +13 -0
  129. package/dist/server/routes/agent-profiles.d.ts +2 -0
  130. package/dist/server/routes/agent-profiles.js +193 -0
  131. package/dist/server/routes/env.js +2 -2
  132. package/dist/server/routes/hooks.d.ts +4 -19
  133. package/dist/server/routes/hooks.js +83 -73
  134. package/dist/server/routes/mcp.js +2 -2
  135. package/dist/server/routes/onboarding.js +19 -10
  136. package/dist/server/routes/tasks.js +4 -4
  137. package/dist/server/routes/terminal.js +47 -34
  138. package/dist/with-plugin.js +3 -3
  139. package/npm-shrinkwrap.json +37 -24
  140. package/package.json +1 -1
  141. package/tsunagi-marketplace/codex/tsunagi-task.md +120 -0
  142. package/.next/standalone/apps/web/.next/server/chunks/ssr/[root-of-the-server]__11y.qj~._.js +0 -3
  143. package/.next/standalone/apps/web/.next/server/chunks/ssr/_03vftq7._.js +0 -7
  144. package/.next/standalone/apps/web/.next/server/chunks/ssr/_0hnxatt._.js +0 -3
  145. package/.next/standalone/apps/web/.next/server/chunks/ssr/_10gk93.._.js +0 -3
  146. package/.next/standalone/apps/web/.next/static/chunks/0.gcmzq82~36i.js +0 -1
  147. package/.next/standalone/apps/web/.next/static/chunks/06gfh91..uydi.js +0 -5
  148. package/.next/standalone/apps/web/.next/static/chunks/0b90ys7wq-p.4.css +0 -4
  149. package/.next/standalone/apps/web/.next/static/chunks/0crn03y2tj0lu.js +0 -6
  150. package/.next/standalone/apps/web/.next/static/chunks/0lvl3ec93cab_.js +0 -7
  151. package/.next/standalone/apps/web/.next/static/chunks/0makl-d3f0_qh.js +0 -2878
  152. package/.next/standalone/apps/web/.next/static/chunks/0o6ggm7jrim25.js +0 -1
  153. package/.next/standalone/apps/web/public/vad/ort-wasm-simd-threaded.mjs +0 -59
  154. package/.next/standalone/apps/web/public/vad/ort-wasm-simd-threaded.wasm +0 -0
  155. package/.next/standalone/apps/web/public/vad/silero_vad_v5.onnx +0 -0
  156. package/.next/standalone/apps/web/public/vad/vad.worklet.bundle.min.js +0 -1
  157. package/dist/server/generated/prisma/models/ClaudeProfile.d.ts +0 -939
  158. package/dist/server/lib/asr-models.d.ts +0 -7
  159. package/dist/server/lib/asr-models.js +0 -51
  160. package/dist/server/lib/claude-profiles.d.ts +0 -49
  161. package/dist/server/lib/claude-profiles.js +0 -168
  162. package/dist/server/lib/process-port.d.ts +0 -1
  163. package/dist/server/lib/process-port.js +0 -28
  164. package/dist/server/lib/python-venv.d.ts +0 -4
  165. package/dist/server/lib/python-venv.js +0 -66
  166. package/dist/server/lib/voice-debug-log.d.ts +0 -9
  167. package/dist/server/lib/voice-debug-log.js +0 -28
  168. package/dist/server/lib/whisper-process.d.ts +0 -40
  169. package/dist/server/lib/whisper-process.js +0 -333
  170. package/dist/server/routes/claude-profiles.d.ts +0 -2
  171. package/dist/server/routes/claude-profiles.js +0 -138
  172. package/dist/server/routes/whisper.d.ts +0 -2
  173. package/dist/server/routes/whisper.js +0 -103
  174. package/dist/whisper-server/README.md +0 -31
  175. package/dist/whisper-server/download_model.py +0 -19
  176. package/dist/whisper-server/requirements.txt +0 -8
  177. package/dist/whisper-server/run.sh +0 -62
  178. package/dist/whisper-server/server.py +0 -147
  179. /package/.next/standalone/apps/web/.next/static/{7x81GlNKt9yqIkeI7U1BX → vdAs-hr87-L7y2bUSdX3i}/_buildManifest.js +0 -0
  180. /package/.next/standalone/apps/web/.next/static/{7x81GlNKt9yqIkeI7U1BX → vdAs-hr87-L7y2bUSdX3i}/_clientMiddlewareManifest.js +0 -0
  181. /package/.next/standalone/apps/web/.next/static/{7x81GlNKt9yqIkeI7U1BX → vdAs-hr87-L7y2bUSdX3i}/_ssgManifest.js +0 -0
  182. /package/dist/server/generated/prisma/models/{ClaudeProfile.js → AgentProfile.js} +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18566,(e,t,r)=>{t.exports=e.r(76562)},95468,e=>{"use strict";var t=e.i(23287);e.s(["CheckCircle2",()=>t.default])},31278,e=>{"use strict";var t=e.i(17521);e.s(["Loader2",()=>t.default])},86311,e=>{"use strict";let t=(0,e.i(75254).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);e.s(["MessageSquare",0,t],86311)},73884,e=>{"use strict";let t=(0,e.i(75254).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",0,t],73884)},2576,e=>{"use strict";var t=e.i(71645),r=e.i(96085),s=e.i(70935);e.s(["useTaskEvents",0,function(e){let a=(0,t.useRef)(null),n=(0,t.useRef)(e);(0,t.useLayoutEffect)(()=>{n.current=e}),(0,t.useEffect)(()=>{let e=(0,r.io)((0,s.getServerUrl)(),{transports:["polling","websocket"]});return a.current=e,e.on("task:created",({task:e,warnings:t})=>{n.current.onTaskCreated(e,t??[])}),e.on("task:updated",({task:e})=>{n.current.onTaskUpdated(e)}),e.on("task:deleted",({taskId:e})=>{n.current.onTaskDeleted(e)}),e.on("task:tabs-changed",({task:e})=>{n.current.onTaskTabsChanged?.(e)}),()=>{e.disconnect(),a.current=null}},[])}])},71698,e=>{"use strict";var t=e.i(71645),r=e.i(96085),s=e.i(70935);e.s(["useTabStatusEvents",0,function(e,a){let n=(0,t.useRef)(null),i=(0,t.useRef)(new Set),u=(0,t.useRef)(a);(0,t.useEffect)(()=>{u.current=a});let c=(0,t.useCallback)(()=>{if(!n.current){let e=(0,r.io)((0,s.getServerUrl)(),{transports:["polling","websocket"]});n.current=e,e.on("status-changed",({sessionId:e,status:t})=>{let r=function(e){switch(e){case"running":return"running";case"waiting":return"waiting";case"success":return"success";case"failure":case"error":return"error";case"idle":return"idle";default:return null}}(t);null!==r&&u.current(e,r)}),e.on("connect",()=>{for(let t of i.current)e.emit("join",{room:t,mode:"subscribe"})})}return n.current},[]);(0,t.useEffect)(()=>{if(0===e.length)return;let t=c();for(let r of e){let e=`tab:${r}`;i.current.has(e)||(t.emit("join",{room:e,mode:"subscribe"}),i.current.add(e))}let r=new Set(e);for(let e of i.current){let s=e.replace("tab:","");r.has(s)||(t.emit("leave",{room:e}),i.current.delete(e))}},[e,c]),(0,t.useEffect)(()=>{let e=i.current;return()=>{n.current?.disconnect(),n.current=null,e.clear()}},[])}])},45139,801,e=>{"use strict";function t(e){return"success"===e||"error"===e||"running"!==e&&"idle"!==e&&void 0}function r(e){let t=e.tabs??[];if(0===t.length||t.some(e=>"running"===e.status))return null;if(t.some(e=>"waiting"===e.status))return"waiting";let r=t.filter(e=>e.unread);return r.some(e=>"error"===e.status)?"error":r.some(e=>"success"===e.status)?"success":null}e.s(["activityKind",0,function(e){return(e.tabs??[]).some(e=>"running"===e.status)?"running":r(e)},"hasUnreadResult",0,function(e){return null!==r(e)},"unreadForStatus",0,t,"unreadKind",0,r],45139);var s=e.i(71645),a=e.i(70935),n=e.i(2576),i=e.i(71698);e.s(["useLiveTasks",0,function(e={}){let[r,u]=(0,s.useState)([]),[c,l]=(0,s.useState)(!0),o=(0,s.useRef)(e),d=(0,s.useRef)(r);(0,s.useEffect)(()=>{o.current=e,d.current=r});let f=(0,s.useCallback)(async()=>{l(!0);try{let e=await fetch((0,a.apiUrl)("/api/tasks"));if(!e.ok)throw Error("Failed to fetch tasks");let t=await e.json();u(t.data.tasks)}catch(e){console.error("Failed to load tasks:",e)}finally{l(!1)}},[]);(0,s.useEffect)(()=>{f()},[f]);let g=(0,s.useMemo)(()=>r.flatMap(e=>(e.tabs??[]).map(e=>e.tab_id)),[r]);return(0,i.useTabStatusEvents)(g,(e,r)=>{let s=t(r);u(t=>t.map(t=>({...t,tabs:(t.tabs??[]).map(t=>t.tab_id===e?{...t,status:r,...void 0!==s&&{unread:s}}:t)})))}),(0,n.useTaskEvents)({onTaskCreated:(e,t)=>{u(t=>t.some(t=>t.id===e.id)?t:[...t,e]),o.current.onTaskCreated?.(e,t)},onTaskUpdated:e=>{u(t=>t.map(t=>t.id===e.id?e:t)),o.current.onTaskUpdated?.(e)},onTaskDeleted:e=>{let t=d.current.find(t=>t.id===e);u(t=>t.filter(t=>t.id!==e)),o.current.onTaskDeleted?.(e,t)},onTaskTabsChanged:e=>{u(t=>t.map(t=>t.id===e.id?e:t))}}),{tasks:r,setTasks:u,isLoading:c,reload:f}}],801)},22770,e=>{"use strict";var t=e.i(18050),r=e.i(18566),s=e.i(71645),a=e.i(95468),n=e.i(31278),i=e.i(86311),u=e.i(73884),c=e.i(45139),l=e.i(801),o=e.i(19805),d=e.i(27601),f=e.i(25913),g=e.i(52088);let m=(0,f.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-[0.625rem] font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-2.5!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border bg-input/20 text-foreground dark:bg-input/30 [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function b({className:e,variant:t="default",render:r,...s}){var a;return a={defaultTagName:"span",props:(0,o.mergeProps)({className:(0,g.cn)(m({variant:t}),e)},s),render:r,state:{slot:"badge",variant:t}},(0,d.useRenderElement)(a.defaultTagName??"div",a,a)}let p={waiting:{order:0,icon:i.MessageSquare,className:"text-warning",label:"Waiting for your input"},error:{order:1,icon:u.XCircle,className:"text-destructive",label:"Failed, not opened yet"},success:{order:2,icon:a.CheckCircle2,className:"text-success",label:"Finished, not opened yet"},running:{order:3,icon:n.Loader2,className:"text-primary animate-spin",label:"Running"}};function v({currentTaskId:e}){let a=(0,r.useRouter)(),{tasks:n}=(0,l.useLiveTasks)(),i=(0,s.useMemo)(()=>{let t=[];for(let r of n){let s=(0,c.activityKind)(r);s&&(r.id!==e||"success"!==s&&"error"!==s)&&t.push({task:r,kind:s})}return t.sort((e,t)=>p[e.kind].order-p[t.kind].order||e.task.order-t.task.order||e.task.createdAt.localeCompare(t.task.createdAt))},[n,e]);return(0,t.jsxs)("aside",{className:"hidden md:flex w-64 shrink-0 flex-col border-r border-border bg-background dark:bg-card",children:[(0,t.jsxs)("div",{className:"flex h-8 shrink-0 box-content items-center gap-2 border-b border-border bg-card p-4",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Active"}),(0,t.jsx)(b,{variant:"secondary",children:i.length})]}),0===i.length?(0,t.jsx)("p",{className:"p-4 text-center text-xs text-muted-foreground",children:"No active tasks"}):(0,t.jsx)("ul",{className:"flex-1 space-y-0.5 overflow-y-auto p-2",children:i.map(({task:r,kind:s})=>{let{icon:n,className:i,label:u}=p[s],c=r.id===e;return(0,t.jsx)("li",{children:(0,t.jsxs)("button",{type:"button",onClick:()=>a.replace(`/tasks/${r.id}`),"aria-current":c?"page":void 0,className:(0,g.cn)("flex w-full items-start gap-2 rounded-md px-2 py-1.5 text-left transition-colors hover:bg-accent",c&&"bg-accent"),children:[(0,t.jsx)("span",{role:"img","aria-label":u,title:u,className:"mt-0.5 shrink-0",children:(0,t.jsx)(n,{className:(0,g.cn)("size-3.5",i)})}),(0,t.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,t.jsx)("span",{className:"block truncate text-sm text-foreground",title:r.title,children:r.title}),(0,t.jsxs)("span",{className:"block truncate text-xs text-muted-foreground",children:[r.owner,"/",r.repo]})]})]})},r.id)})})]})}e.s(["default",0,function({children:e}){let{id:s}=(0,r.useParams)();return(0,t.jsxs)("div",{className:"h-screen flex bg-background",children:[(0,t.jsx)(v,{currentTaskId:s}),(0,t.jsx)("div",{className:"flex-1 min-w-0",children:e})]})}],22770)}]);
@@ -5,9 +5,7 @@
5
5
  "description": "Next.js UI for tsunagi",
6
6
  "type": "module",
7
7
  "scripts": {
8
- "predev": "node scripts/copy-vad-assets.mjs",
9
8
  "dev": "next dev -p 2792",
10
- "prebuild": "node scripts/copy-vad-assets.mjs",
11
9
  "build": "next build",
12
10
  "start": "next start -p 2792",
13
11
  "lint": "eslint",
@@ -18,8 +16,8 @@
18
16
  "@hello-pangea/dnd": "^18.0.1",
19
17
  "@minimalcorp/tsunagi-shared": "*",
20
18
  "@monaco-editor/react": "^4.7.0",
21
- "@ricky0123/vad-web": "^0.0.31",
22
19
  "@xterm/addon-fit": "^0.11.0",
20
+ "@xterm/addon-web-links": "^0.12.0",
23
21
  "@xterm/xterm": "^6.0.0",
24
22
  "@xyflow/react": "^12.10.0",
25
23
  "class-variance-authority": "^0.7.1",
package/README.md CHANGED
@@ -139,7 +139,7 @@ tsunagi/
139
139
 
140
140
  - **Node.js ≥ 20**
141
141
  - **Git ≥ 2.42**(空リポジトリを扱うため `git worktree add --orphan` を使用)
142
- - **Claude Code CLI**(`claude` コマンドが PATH 上に必要)
142
+ - **Claude Code CLI**(`claude` ≥ 2.1.280)または **Codex CLI**(`codex` ≥ 0.162.0)のどちらか(PATH 上に必要)
143
143
 
144
144
  ## ライセンス
145
145
 
package/dist/app.js CHANGED
@@ -4,7 +4,7 @@ import * as http from 'node:http';
4
4
  import * as path from 'node:path';
5
5
  import { fileURLToPath } from 'node:url';
6
6
  import openBrowser from 'open';
7
- import { assertClaudeSupportsPluginDirs, getPluginDir, removeLegacyPluginInstall, } from './plugin-lifecycle.js';
7
+ import { assertAgentCliAvailable, getPluginDir, removeLegacyPluginInstall, } from './plugin-lifecycle.js';
8
8
  import { isAutoUpdateEnabled, isEntryOutdated, removeVersionsOlderThan, snapshotDbBeforeFirstStart, waitForPortsFree, } from './update-lifecycle.js';
9
9
  import { RESTART_EXIT_CODE } from './versions.js';
10
10
  /**
@@ -37,7 +37,6 @@ import { RESTART_EXIT_CODE } from './versions.js';
37
37
  * <pkg>/dist/prisma.config.ts ← passed via --config by dist/auto-migrate.js
38
38
  * <pkg>/dist/scripts/monaco-editor.sh ← $EDITOR for Ctrl+G (resolved by dist/server/routes/terminal.js)
39
39
  * <pkg>/dist/docs/ ← bundled from apps/docs/out (served on DOCS_PORT)
40
- * <pkg>/dist/whisper-server/ ← bundled from apps/whisper-server
41
40
  * <pkg>/tsunagi-marketplace/plugins/tsunagi-plugin/.claude-plugin/plugin.json
42
41
  */
43
42
  // ---------------------------------------------------------------------------
@@ -130,8 +129,8 @@ runAutoMigrate();
130
129
  // ---------------------------------------------------------------------------
131
130
  // Phase 2: Plugin lifecycle
132
131
  // ---------------------------------------------------------------------------
133
- assertClaudeSupportsPluginDirs();
134
- removeLegacyPluginInstall();
132
+ if (assertAgentCliAvailable().claude)
133
+ removeLegacyPluginInstall();
135
134
  // ---------------------------------------------------------------------------
136
135
  // Docs static file server
137
136
  // ---------------------------------------------------------------------------
@@ -1,10 +1,12 @@
1
1
  /** PTY の CLAUDE_CODE_PLUGIN_DIRS に渡すプラグインのディレクトリ(絶対パス) */
2
2
  export declare function getPluginDir(): string;
3
3
  /**
4
- * Exits the process with code 1 if the `claude` CLI is missing or too old to
5
- * load plugins from `CLAUDE_CODE_PLUGIN_DIRS`.
4
+ * 使えるエージェント CLI(claude / codex)を確認する。どちらも使えなければ code 1 で終了する。
5
+ * 戻り値は claude が使えるか(旧プラグインの掃除は claude があるときだけ行う)。
6
6
  */
7
- export declare function assertClaudeSupportsPluginDirs(): void;
7
+ export declare function assertAgentCliAvailable(): {
8
+ claude: boolean;
9
+ };
8
10
  /**
9
11
  * Remove the user-scope plugin / marketplace registered by older tsunagi
10
12
  * versions. Runs once; a marker file in the state dir records completion.
@@ -38,10 +38,12 @@ function debugLog(msg) {
38
38
  export function getPluginDir() {
39
39
  return path.resolve(THIS_DIR, '..', MARKETPLACE_NAME, 'plugins', PLUGIN_NAME);
40
40
  }
41
- /** `claude --version` の出力(例: "2.1.292 (Claude Code)")から x.y.z を取り出す */
42
- function getClaudeVersion() {
41
+ // tsunagi が使う `-c` キー(hooks / hooks.state / tools.update_plan 等)を確認したバージョン
42
+ const MIN_CODEX_VERSION = [0, 162, 0];
43
+ /** `<cli> --version` の出力(例: "2.1.292 (Claude Code)" / "codex-cli 0.162.1")から x.y.z を取り出す */
44
+ function getCliVersion(cli) {
43
45
  try {
44
- const output = execSync('claude --version', { stdio: 'pipe' }).toString();
46
+ const output = execSync(`${cli} --version`, { stdio: 'pipe' }).toString();
45
47
  const match = /(\d+)\.(\d+)\.(\d+)/.exec(output);
46
48
  return match ? match.slice(1).map(Number) : null;
47
49
  }
@@ -56,24 +58,46 @@ function isAtLeast(version, min) {
56
58
  }
57
59
  return true;
58
60
  }
61
+ function checkCli(cli, min) {
62
+ const version = getCliVersion(cli);
63
+ if (!version)
64
+ return { status: 'missing' };
65
+ return isAtLeast(version, min)
66
+ ? { status: 'ok', version: version.join('.') }
67
+ : { status: 'outdated', version: version.join('.') };
68
+ }
59
69
  /**
60
- * Exits the process with code 1 if the `claude` CLI is missing or too old to
61
- * load plugins from `CLAUDE_CODE_PLUGIN_DIRS`.
70
+ * 使えるエージェント CLI(claude / codex)を確認する。どちらも使えなければ code 1 で終了する。
71
+ * 戻り値は claude が使えるか(旧プラグインの掃除は claude があるときだけ行う)。
62
72
  */
63
- export function assertClaudeSupportsPluginDirs() {
64
- const minLabel = MIN_CLAUDE_VERSION.join('.');
65
- const version = getClaudeVersion();
66
- if (!version) {
67
- console.error('[tsunagi:plugin] Failed to run `claude --version`.');
68
- console.error('[tsunagi:plugin] Ensure the `claude` CLI is installed and available on PATH.');
73
+ export function assertAgentCliAvailable() {
74
+ const claude = checkCli('claude', MIN_CLAUDE_VERSION);
75
+ const codex = checkCli('codex', MIN_CODEX_VERSION);
76
+ const claudeMin = MIN_CLAUDE_VERSION.join('.');
77
+ const codexMin = MIN_CODEX_VERSION.join('.');
78
+ if (claude.status === 'ok')
79
+ debugLog(`Claude Code ${claude.version}`);
80
+ if (codex.status === 'ok')
81
+ debugLog(`Codex ${codex.version}`);
82
+ if (claude.status !== 'ok' && codex.status !== 'ok') {
83
+ console.error('[tsunagi:plugin] No supported coding agent CLI found.');
84
+ if (claude.status === 'outdated') {
85
+ console.error(`[tsunagi:plugin] Claude Code ${claude.version} is too old (requires ${claudeMin}+). Run \`claude update\`.`);
86
+ }
87
+ if (codex.status === 'outdated') {
88
+ console.error(`[tsunagi:plugin] Codex ${codex.version} is too old (requires ${codexMin}+). Update the \`codex\` CLI.`);
89
+ }
90
+ console.error('[tsunagi:plugin] Install `claude` (Claude Code) or `codex` (Codex CLI) and make sure it is on PATH.');
69
91
  process.exit(1);
70
92
  }
71
- if (!isAtLeast(version, MIN_CLAUDE_VERSION)) {
72
- console.error(`[tsunagi:plugin] Claude Code ${version.join('.')} is too old. tsunagi requires ${minLabel} or later.`);
73
- console.error('[tsunagi:plugin] Run `claude update` and start tsunagi again.');
74
- process.exit(1);
93
+ // 片方だけ古い場合は起動を続け、そのエージェントのタブだけ使えない旨を出す
94
+ if (claude.status === 'outdated') {
95
+ console.warn(`[tsunagi:plugin] Claude Code ${claude.version} is too old (requires ${claudeMin}+). Claude tabs will not work until you run \`claude update\`.`);
96
+ }
97
+ if (codex.status === 'outdated') {
98
+ console.warn(`[tsunagi:plugin] Codex ${codex.version} is too old (requires ${codexMin}+). Codex tabs will not work until you update it.`);
75
99
  }
76
- debugLog(`Claude Code ${version.join('.')}`);
100
+ return { claude: claude.status === 'ok' };
77
101
  }
78
102
  /**
79
103
  * Run a `claude` CLI command. Returns true on success, false on failure.
@@ -0,0 +1,20 @@
1
+ -- AlterTable
2
+ -- エージェント側のセッションID(Codex の thread id)。resume に使う
3
+ ALTER TABLE "tabs" ADD COLUMN "agent_session_id" TEXT;
4
+
5
+ -- CreateTable
6
+ -- Claude 専用だったプロファイルをエージェントごとに一般化する(既存行は claude として移行)
7
+ CREATE TABLE "agent_profiles" (
8
+ "agent" TEXT NOT NULL,
9
+ "slug" TEXT NOT NULL,
10
+ "name" TEXT NOT NULL,
11
+ "created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
12
+
13
+ PRIMARY KEY ("agent", "slug")
14
+ );
15
+
16
+ INSERT INTO "agent_profiles" ("agent", "slug", "name", "created_at")
17
+ SELECT 'claude', "slug", "name", "created_at" FROM "claude_profiles";
18
+
19
+ -- DropTable
20
+ DROP TABLE "claude_profiles";
@@ -59,13 +59,15 @@ model Tab {
59
59
  taskId String @map("task_id")
60
60
  order Int // タブ表示用の連番
61
61
  status String // 'idle' | 'running' | 'success' | 'error'
62
- mode String @default("claude") // 'terminal' | 'claude' | 'local'(local: ローカルLLMで起動するclaude。旧 'ollama' / 'lmstudio' も local 扱い)
62
+ mode String @default("claude") // 'terminal' | 'claude' | 'codex' | 'local'(local: ローカルLLMで起動するclaude。旧 'ollama' / 'lmstudio' も local 扱い)
63
63
  createdAt DateTime @default(now()) @map("created_at")
64
64
  startedAt DateTime @map("started_at")
65
65
  completedAt DateTime? @map("completed_at")
66
66
  todos String? @default("[]") // JSON: Todo[]
67
67
  // 完了(success/error)したがタスク詳細で未確認であることを示す。詳細を開くとfalseになる
68
68
  unread Boolean @default(false)
69
+ // エージェント側のセッションID(タブIDと別の ID を振るエージェントのみ。Codex の thread id)。resume に使う
70
+ agentSessionId String? @map("agent_session_id")
69
71
  updatedAt DateTime @updatedAt @map("updated_at")
70
72
 
71
73
  task Task @relation(fields: [taskId], references: [id], onDelete: Cascade)
@@ -93,13 +95,15 @@ model EnvironmentVariable {
93
95
  @@map("environment_variables")
94
96
  }
95
97
 
96
- // ClaudeProfile - Claude Code のプロファイル(CLAUDE_CONFIG_DIR = ~/.tsunagi/claude-profiles/<slug>)
97
- model ClaudeProfile {
98
- slug String @id
98
+ // エージェントのプロファイル。実体は ~/.tsunagi/<agent>-profiles/<slug>/(Claude: CLAUDE_CONFIG_DIR / Codex: CODEX_HOME)
99
+ model AgentProfile {
100
+ agent String // 'claude' | 'codex'
101
+ slug String
99
102
  name String
100
103
  createdAt DateTime @default(now()) @map("created_at")
101
104
 
102
- @@map("claude_profiles")
105
+ @@id([agent, slug])
106
+ @@map("agent_profiles")
103
107
  }
104
108
 
105
109
  // AppSetting - アプリ全体の設定(key単位でJSONを保存)
@@ -23,10 +23,10 @@ export type Tab = Prisma.TabModel;
23
23
  */
24
24
  export type EnvironmentVariable = Prisma.EnvironmentVariableModel;
25
25
  /**
26
- * Model ClaudeProfile
26
+ * Model AgentProfile
27
27
  *
28
28
  */
29
- export type ClaudeProfile = Prisma.ClaudeProfileModel;
29
+ export type AgentProfile = Prisma.AgentProfileModel;
30
30
  /**
31
31
  * Model AppSetting
32
32
  *
@@ -42,10 +42,10 @@ export type Tab = Prisma.TabModel;
42
42
  */
43
43
  export type EnvironmentVariable = Prisma.EnvironmentVariableModel;
44
44
  /**
45
- * Model ClaudeProfile
45
+ * Model AgentProfile
46
46
  *
47
47
  */
48
- export type ClaudeProfile = Prisma.ClaudeProfileModel;
48
+ export type AgentProfile = Prisma.AgentProfileModel;
49
49
  /**
50
50
  * Model AppSetting
51
51
  *
@@ -160,14 +160,14 @@ export interface PrismaClient<in LogOpts extends Prisma.LogLevel = never, in out
160
160
  omit: OmitOpts;
161
161
  }>;
162
162
  /**
163
- * `prisma.claudeProfile`: Exposes CRUD operations for the **ClaudeProfile** model.
163
+ * `prisma.agentProfile`: Exposes CRUD operations for the **AgentProfile** model.
164
164
  * Example usage:
165
165
  * ```ts
166
- * // Fetch zero or more ClaudeProfiles
167
- * const claudeProfiles = await prisma.claudeProfile.findMany()
166
+ * // Fetch zero or more AgentProfiles
167
+ * const agentProfiles = await prisma.agentProfile.findMany()
168
168
  * ```
169
169
  */
170
- get claudeProfile(): Prisma.ClaudeProfileDelegate<ExtArgs, {
170
+ get agentProfile(): Prisma.AgentProfileDelegate<ExtArgs, {
171
171
  omit: OmitOpts;
172
172
  }>;
173
173
  /**
@@ -15,7 +15,7 @@ const config = {
15
15
  "clientVersion": "7.6.0",
16
16
  "engineVersion": "75cbdc1eb7150937890ad5465d861175c6624711",
17
17
  "activeProvider": "sqlite",
18
- "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\n// Repository\nmodel Repository {\n id String @id @default(uuid())\n owner String\n repo String\n cloneUrl String @map(\"clone_url\")\n order Int @default(0)\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n tasks Task[]\n environmentVars EnvironmentVariable[]\n\n @@unique([owner, repo])\n @@map(\"repositories\")\n}\n\n// Task\nmodel Task {\n id String @id @default(uuid())\n title String\n description String\n status String // 'backlog' | 'planning' | 'coding' | 'reviewing' | 'done'\n owner String\n repo String\n branch String\n baseBranch String @map(\"base_branch\") // rebase/merge判定用のベースブランチ\n repoId String @map(\"repo_id\")\n\n // Pull Request情報\n pullRequestUrl String? @map(\"pull_request_url\")\n\n effort Int?\n order Int @default(0)\n deletedAt DateTime? @map(\"deleted_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n repository Repository @relation(fields: [repoId], references: [id], onDelete: Cascade)\n tabs Tab[]\n\n @@index([owner, repo])\n @@index([status])\n @@index([deletedAt])\n @@map(\"tasks\")\n}\n\n// Tab\nmodel Tab {\n tabId String @id @map(\"tab_id\")\n taskId String @map(\"task_id\")\n order Int // タブ表示用の連番\n status String // 'idle' | 'running' | 'success' | 'error'\n mode String @default(\"claude\") // 'terminal' | 'claude' | 'local'(local: ローカルLLMで起動するclaude。旧 'ollama' / 'lmstudio' も local 扱い)\n createdAt DateTime @default(now()) @map(\"created_at\")\n startedAt DateTime @map(\"started_at\")\n completedAt DateTime? @map(\"completed_at\")\n todos String? @default(\"[]\") // JSON: Todo[]\n // 完了(success/error)したがタスク詳細で未確認であることを示す。詳細を開くとfalseになる\n unread Boolean @default(false)\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n task Task @relation(fields: [taskId], references: [id], onDelete: Cascade)\n\n @@index([taskId])\n @@map(\"tabs\")\n}\n\n// EnvironmentVariable\nmodel EnvironmentVariable {\n id String @id @default(uuid())\n key String\n value String\n scope String // 'global' | 'owner' | 'repo' - 階層構造の優先順位制御\n owner String?\n repo String?\n enabled Boolean @default(true)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n repository Repository? @relation(fields: [owner, repo], references: [owner, repo], onDelete: Cascade)\n\n @@unique([key, scope, owner, repo])\n @@index([scope, owner, repo])\n @@map(\"environment_variables\")\n}\n\n// ClaudeProfile - Claude Code のプロファイル(CLAUDE_CONFIG_DIR = ~/.tsunagi/claude-profiles/<slug>)\nmodel ClaudeProfile {\n slug String @id\n name String\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n @@map(\"claude_profiles\")\n}\n\n// AppSetting - アプリ全体の設定(key単位でJSONを保存)\nmodel AppSetting {\n key String @id\n value String // JSON\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@map(\"app_settings\")\n}\n",
18
+ "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\n// Repository\nmodel Repository {\n id String @id @default(uuid())\n owner String\n repo String\n cloneUrl String @map(\"clone_url\")\n order Int @default(0)\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n tasks Task[]\n environmentVars EnvironmentVariable[]\n\n @@unique([owner, repo])\n @@map(\"repositories\")\n}\n\n// Task\nmodel Task {\n id String @id @default(uuid())\n title String\n description String\n status String // 'backlog' | 'planning' | 'coding' | 'reviewing' | 'done'\n owner String\n repo String\n branch String\n baseBranch String @map(\"base_branch\") // rebase/merge判定用のベースブランチ\n repoId String @map(\"repo_id\")\n\n // Pull Request情報\n pullRequestUrl String? @map(\"pull_request_url\")\n\n effort Int?\n order Int @default(0)\n deletedAt DateTime? @map(\"deleted_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n repository Repository @relation(fields: [repoId], references: [id], onDelete: Cascade)\n tabs Tab[]\n\n @@index([owner, repo])\n @@index([status])\n @@index([deletedAt])\n @@map(\"tasks\")\n}\n\n// Tab\nmodel Tab {\n tabId String @id @map(\"tab_id\")\n taskId String @map(\"task_id\")\n order Int // タブ表示用の連番\n status String // 'idle' | 'running' | 'success' | 'error'\n mode String @default(\"claude\") // 'terminal' | 'claude' | 'codex' | 'local'(local: ローカルLLMで起動するclaude。旧 'ollama' / 'lmstudio' も local 扱い)\n createdAt DateTime @default(now()) @map(\"created_at\")\n startedAt DateTime @map(\"started_at\")\n completedAt DateTime? @map(\"completed_at\")\n todos String? @default(\"[]\") // JSON: Todo[]\n // 完了(success/error)したがタスク詳細で未確認であることを示す。詳細を開くとfalseになる\n unread Boolean @default(false)\n // エージェント側のセッションID(タブIDと別の ID を振るエージェントのみ。Codex の thread id)。resume に使う\n agentSessionId String? @map(\"agent_session_id\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n task Task @relation(fields: [taskId], references: [id], onDelete: Cascade)\n\n @@index([taskId])\n @@map(\"tabs\")\n}\n\n// EnvironmentVariable\nmodel EnvironmentVariable {\n id String @id @default(uuid())\n key String\n value String\n scope String // 'global' | 'owner' | 'repo' - 階層構造の優先順位制御\n owner String?\n repo String?\n enabled Boolean @default(true)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n repository Repository? @relation(fields: [owner, repo], references: [owner, repo], onDelete: Cascade)\n\n @@unique([key, scope, owner, repo])\n @@index([scope, owner, repo])\n @@map(\"environment_variables\")\n}\n\n// エージェントのプロファイル。実体は ~/.tsunagi/<agent>-profiles/<slug>/(Claude: CLAUDE_CONFIG_DIR / Codex: CODEX_HOME)\nmodel AgentProfile {\n agent String // 'claude' | 'codex'\n slug String\n name String\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n @@id([agent, slug])\n @@map(\"agent_profiles\")\n}\n\n// AppSetting - アプリ全体の設定(key単位でJSONを保存)\nmodel AppSetting {\n key String @id\n value String // JSON\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@map(\"app_settings\")\n}\n",
19
19
  "runtimeDataModel": {
20
20
  "models": {},
21
21
  "enums": {},
@@ -26,10 +26,10 @@ const config = {
26
26
  "graph": ""
27
27
  }
28
28
  };
29
- config.runtimeDataModel = JSON.parse("{\"models\":{\"Repository\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"owner\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"repo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cloneUrl\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"clone_url\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"tasks\",\"kind\":\"object\",\"type\":\"Task\",\"relationName\":\"RepositoryToTask\"},{\"name\":\"environmentVars\",\"kind\":\"object\",\"type\":\"EnvironmentVariable\",\"relationName\":\"EnvironmentVariableToRepository\"}],\"dbName\":\"repositories\"},\"Task\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"owner\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"repo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"branch\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"baseBranch\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"base_branch\"},{\"name\":\"repoId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"repo_id\"},{\"name\":\"pullRequestUrl\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"pull_request_url\"},{\"name\":\"effort\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"deleted_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"repository\",\"kind\":\"object\",\"type\":\"Repository\",\"relationName\":\"RepositoryToTask\"},{\"name\":\"tabs\",\"kind\":\"object\",\"type\":\"Tab\",\"relationName\":\"TabToTask\"}],\"dbName\":\"tasks\"},\"Tab\":{\"fields\":[{\"name\":\"tabId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"tab_id\"},{\"name\":\"taskId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"task_id\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"started_at\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"completed_at\"},{\"name\":\"todos\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"unread\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"task\",\"kind\":\"object\",\"type\":\"Task\",\"relationName\":\"TabToTask\"}],\"dbName\":\"tabs\"},\"EnvironmentVariable\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"owner\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"repo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"repository\",\"kind\":\"object\",\"type\":\"Repository\",\"relationName\":\"EnvironmentVariableToRepository\"}],\"dbName\":\"environment_variables\"},\"ClaudeProfile\":{\"fields\":[{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"}],\"dbName\":\"claude_profiles\"},\"AppSetting\":{\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"app_settings\"}},\"enums\":{},\"types\":{}}");
29
+ config.runtimeDataModel = JSON.parse("{\"models\":{\"Repository\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"owner\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"repo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cloneUrl\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"clone_url\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"tasks\",\"kind\":\"object\",\"type\":\"Task\",\"relationName\":\"RepositoryToTask\"},{\"name\":\"environmentVars\",\"kind\":\"object\",\"type\":\"EnvironmentVariable\",\"relationName\":\"EnvironmentVariableToRepository\"}],\"dbName\":\"repositories\"},\"Task\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"owner\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"repo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"branch\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"baseBranch\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"base_branch\"},{\"name\":\"repoId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"repo_id\"},{\"name\":\"pullRequestUrl\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"pull_request_url\"},{\"name\":\"effort\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"deleted_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"repository\",\"kind\":\"object\",\"type\":\"Repository\",\"relationName\":\"RepositoryToTask\"},{\"name\":\"tabs\",\"kind\":\"object\",\"type\":\"Tab\",\"relationName\":\"TabToTask\"}],\"dbName\":\"tasks\"},\"Tab\":{\"fields\":[{\"name\":\"tabId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"tab_id\"},{\"name\":\"taskId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"task_id\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"started_at\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"completed_at\"},{\"name\":\"todos\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"unread\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"agentSessionId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"agent_session_id\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"task\",\"kind\":\"object\",\"type\":\"Task\",\"relationName\":\"TabToTask\"}],\"dbName\":\"tabs\"},\"EnvironmentVariable\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"owner\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"repo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"repository\",\"kind\":\"object\",\"type\":\"Repository\",\"relationName\":\"EnvironmentVariableToRepository\"}],\"dbName\":\"environment_variables\"},\"AgentProfile\":{\"fields\":[{\"name\":\"agent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"}],\"dbName\":\"agent_profiles\"},\"AppSetting\":{\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"app_settings\"}},\"enums\":{},\"types\":{}}");
30
30
  config.parameterizationSchema = {
31
- strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"repository\",\"task\",\"tabs\",\"_count\",\"tasks\",\"environmentVars\",\"Repository.findUnique\",\"Repository.findUniqueOrThrow\",\"Repository.findFirst\",\"Repository.findFirstOrThrow\",\"Repository.findMany\",\"data\",\"Repository.createOne\",\"Repository.createMany\",\"Repository.createManyAndReturn\",\"Repository.updateOne\",\"Repository.updateMany\",\"Repository.updateManyAndReturn\",\"create\",\"update\",\"Repository.upsertOne\",\"Repository.deleteOne\",\"Repository.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"Repository.groupBy\",\"Repository.aggregate\",\"Task.findUnique\",\"Task.findUniqueOrThrow\",\"Task.findFirst\",\"Task.findFirstOrThrow\",\"Task.findMany\",\"Task.createOne\",\"Task.createMany\",\"Task.createManyAndReturn\",\"Task.updateOne\",\"Task.updateMany\",\"Task.updateManyAndReturn\",\"Task.upsertOne\",\"Task.deleteOne\",\"Task.deleteMany\",\"Task.groupBy\",\"Task.aggregate\",\"Tab.findUnique\",\"Tab.findUniqueOrThrow\",\"Tab.findFirst\",\"Tab.findFirstOrThrow\",\"Tab.findMany\",\"Tab.createOne\",\"Tab.createMany\",\"Tab.createManyAndReturn\",\"Tab.updateOne\",\"Tab.updateMany\",\"Tab.updateManyAndReturn\",\"Tab.upsertOne\",\"Tab.deleteOne\",\"Tab.deleteMany\",\"Tab.groupBy\",\"Tab.aggregate\",\"EnvironmentVariable.findUnique\",\"EnvironmentVariable.findUniqueOrThrow\",\"EnvironmentVariable.findFirst\",\"EnvironmentVariable.findFirstOrThrow\",\"EnvironmentVariable.findMany\",\"EnvironmentVariable.createOne\",\"EnvironmentVariable.createMany\",\"EnvironmentVariable.createManyAndReturn\",\"EnvironmentVariable.updateOne\",\"EnvironmentVariable.updateMany\",\"EnvironmentVariable.updateManyAndReturn\",\"EnvironmentVariable.upsertOne\",\"EnvironmentVariable.deleteOne\",\"EnvironmentVariable.deleteMany\",\"EnvironmentVariable.groupBy\",\"EnvironmentVariable.aggregate\",\"ClaudeProfile.findUnique\",\"ClaudeProfile.findUniqueOrThrow\",\"ClaudeProfile.findFirst\",\"ClaudeProfile.findFirstOrThrow\",\"ClaudeProfile.findMany\",\"ClaudeProfile.createOne\",\"ClaudeProfile.createMany\",\"ClaudeProfile.createManyAndReturn\",\"ClaudeProfile.updateOne\",\"ClaudeProfile.updateMany\",\"ClaudeProfile.updateManyAndReturn\",\"ClaudeProfile.upsertOne\",\"ClaudeProfile.deleteOne\",\"ClaudeProfile.deleteMany\",\"ClaudeProfile.groupBy\",\"ClaudeProfile.aggregate\",\"AppSetting.findUnique\",\"AppSetting.findUniqueOrThrow\",\"AppSetting.findFirst\",\"AppSetting.findFirstOrThrow\",\"AppSetting.findMany\",\"AppSetting.createOne\",\"AppSetting.createMany\",\"AppSetting.createManyAndReturn\",\"AppSetting.updateOne\",\"AppSetting.updateMany\",\"AppSetting.updateManyAndReturn\",\"AppSetting.upsertOne\",\"AppSetting.deleteOne\",\"AppSetting.deleteMany\",\"AppSetting.groupBy\",\"AppSetting.aggregate\",\"AND\",\"OR\",\"NOT\",\"key\",\"value\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"slug\",\"name\",\"createdAt\",\"id\",\"scope\",\"owner\",\"repo\",\"enabled\",\"tabId\",\"taskId\",\"order\",\"status\",\"mode\",\"startedAt\",\"completedAt\",\"todos\",\"unread\",\"title\",\"description\",\"branch\",\"baseBranch\",\"repoId\",\"pullRequestUrl\",\"effort\",\"deletedAt\",\"cloneUrl\",\"every\",\"some\",\"none\",\"key_scope_owner_repo\",\"owner_repo\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
32
- graph: "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_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_AQAAAAGAAQEAAAABgQEBAAAAAQsGAACkAQAgHQAApQEAIB4AAKUBACB3QAAAAAF4QAAAAAR5QAAAAAR6QAAAAAF7QAAAAAF8QAAAAAF9QAAAAAF-QACjAQAhCwYAAKQBACAdAAClAQAgHgAApQEAIHdAAAAAAXhAAAAABHlAAAAABHpAAAAAAXtAAAAAAXxAAAAAAX1AAAAAAX5AAKMBACEIdwIAAAABeAIAAAAEeQIAAAAEegIAAAABewIAAAABfAIAAAABfQIAAAABfgIApAEAIQh3QAAAAAF4QAAAAAR5QAAAAAR6QAAAAAF7QAAAAAF8QAAAAAF9QAAAAAF-QAClAQAhDgYAAKQBACAdAACnAQAgHgAApwEAIHcBAAAAAXgBAAAABHkBAAAABHoBAAAAAXsBAAAAAXwBAAAAAX0BAAAAAX4BAKYBACF_AQAAAAGAAQEAAAABgQEBAAAAAQt3AQAAAAF4AQAAAAR5AQAAAAR6AQAAAAF7AQAAAAF8AQAAAAF9AQAAAAF-AQCnAQAhfwEAAAABgAEBAAAAAYEBAQAAAAEGcQAAqAEAMHIAAIoBABBzAACoAQAwdAEAqQEAIXUBAKkBACF2QACqAQAhC3cBAAAAAXgBAAAABHkBAAAABHoBAAAAAXsBAAAAAXwBAAAAAX0BAAAAAX4BAKcBACF_AQAAAAGAAQEAAAABgQEBAAAAAQh3QAAAAAF4QAAAAAR5QAAAAAR6QAAAAAF7QAAAAAF8QAAAAAF9QAAAAAF-QAClAQAhBnEAAKsBADByAACEAQAQcwAAqwEAMIIBAQChAQAhgwEBAKEBACGEAUAAogEAIQZxAACsAQAwcgAAcQAQcwAArAEAMIIBAQCpAQAhgwEBAKkBACGEAUAAqgEAIQxxAACtAQAwcgAAawAQcwAArQEAMHQBAKEBACF1AQChAQAhdkAAogEAIYQBQACiAQAhhQEBAKEBACGGAQEAoQEAIYcBAQCuAQAhiAEBAK4BACGJASAArwEAIQ4GAACzAQAgHQAAtAEAIB4AALQBACB3AQAAAAF4AQAAAAV5AQAAAAV6AQAAAAF7AQAAAAF8AQAAAAF9AQAAAAF-AQCyAQAhfwEAAAABgAEBAAAAAYEBAQAAAAEFBgAApAEAIB0AALEBACAeAACxAQAgdyAAAAABfiAAsAEAIQUGAACkAQAgHQAAsQEAIB4AALEBACB3IAAAAAF-IACwAQAhAncgAAAAAX4gALEBACEOBgAAswEAIB0AALQBACAeAAC0AQAgdwEAAAABeAEAAAAFeQEAAAAFegEAAAABewEAAAABfAEAAAABfQEAAAABfgEAsgEAIX8BAAAAAYABAQAAAAGBAQEAAAABCHcCAAAAAXgCAAAABXkCAAAABXoCAAAAAXsCAAAAAXwCAAAAAX0CAAAAAX4CALMBACELdwEAAAABeAEAAAAFeQEAAAAFegEAAAABewEAAAABfAEAAAABfQEAAAABfgEAtAEAIX8BAAAAAYABAQAAAAGBAQEAAAABDnEAALUBADByAABTABBzAAC1AQAwdkAAogEAIYQBQACiAQAhigEBAKEBACGLAQEAoQEAIYwBAgC2AQAhjQEBAKEBACGOAQEAoQEAIY8BQACiAQAhkAFAALcBACGRAQEArgEAIZIBIACvAQAhDQYAAKQBACAbAAC7AQAgHAAApAEAIB0AAKQBACAeAACkAQAgdwIAAAABeAIAAAAEeQIAAAAEegIAAAABewIAAAABfAIAAAABfQIAAAABfgIAugEAIQsGAACzAQAgHQAAuQEAIB4AALkBACB3QAAAAAF4QAAAAAV5QAAAAAV6QAAAAAF7QAAAAAF8QAAAAAF9QAAAAAF-QAC4AQAhCwYAALMBACAdAAC5AQAgHgAAuQEAIHdAAAAAAXhAAAAABXlAAAAABXpAAAAAAXtAAAAAAXxAAAAAAX1AAAAAAX5AALgBACEId0AAAAABeEAAAAAFeUAAAAAFekAAAAABe0AAAAABfEAAAAABfUAAAAABfkAAuQEAIQ0GAACkAQAgGwAAuwEAIBwAAKQBACAdAACkAQAgHgAApAEAIHcCAAAAAXgCAAAABHkCAAAABHoCAAAAAXsCAAAAAXwCAAAAAX0CAAAAAX4CALoBACEIdwgAAAABeAgAAAAEeQgAAAAEeggAAAABewgAAAABfAgAAAABfQgAAAABfggAuwEAIRJxAAC8AQAwcgAAPQAQcwAAvAEAMHZAAKIBACGEAUAAogEAIYUBAQChAQAhhwEBAKEBACGIAQEAoQEAIYwBAgC2AQAhjQEBAKEBACGTAQEAoQEAIZQBAQChAQAhlQEBAKEBACGWAQEAoQEAIZcBAQChAQAhmAEBAK4BACGZAQIAvQEAIZoBQAC3AQAhDQYAALMBACAbAAC_AQAgHAAAswEAIB0AALMBACAeAACzAQAgdwIAAAABeAIAAAAFeQIAAAAFegIAAAABewIAAAABfAIAAAABfQIAAAABfgIAvgEAIQ0GAACzAQAgGwAAvwEAIBwAALMBACAdAACzAQAgHgAAswEAIHcCAAAAAXgCAAAABXkCAAAABXoCAAAAAXsCAAAAAXwCAAAAAX0CAAAAAX4CAL4BACEIdwgAAAABeAgAAAAFeQgAAAAFeggAAAABewgAAAABfAgAAAABfQgAAAABfggAvwEAIQlxAADAAQAwcgAAJwAQcwAAwAEAMIQBQACiAQAhhQEBAKEBACGHAQEAoQEAIYgBAQChAQAhjAECALYBACGbAQEAoQEAIQsHAADDAQAgCAAAxAEAIHEAAMEBADByAAAQABBzAADBAQAwhAFAAKoBACGFAQEAqQEAIYcBAQCpAQAhiAEBAKkBACGMAQIAwgEAIZsBAQCpAQAhCHcCAAAAAXgCAAAABHkCAAAABHoCAAAAAXsCAAAAAXwCAAAAAX0CAAAAAX4CAKQBACEDnAEAAAMAIJ0BAAADACCeAQAAAwAgA5wBAAAMACCdAQAADAAgngEAAAwAIAR0AQAAAAGGAQEAAAABhwEBAAAAAYgBAQAAAAENAwAAyQEAIHEAAMYBADByAAAMABBzAADGAQAwdAEAqQEAIXUBAKkBACF2QACqAQAhhAFAAKoBACGFAQEAqQEAIYYBAQCpAQAhhwEBAMcBACGIAQEAxwEAIYkBIADIAQAhC3cBAAAAAXgBAAAABXkBAAAABXoBAAAAAXsBAAAAAXwBAAAAAX0BAAAAAX4BALQBACF_AQAAAAGAAQEAAAABgQEBAAAAAQJ3IAAAAAF-IACxAQAhDQcAAMMBACAIAADEAQAgcQAAwQEAMHIAABAAEHMAAMEBADCEAUAAqgEAIYUBAQCpAQAhhwEBAKkBACGIAQEAqQEAIYwBAgDCAQAhmwEBAKkBACGhAQAAEAAgogEAABAAIA8EAADMAQAgcQAAygEAMHIAAAcAEHMAAMoBADB2QACqAQAhhAFAAKoBACGKAQEAqQEAIYsBAQCpAQAhjAECAMIBACGNAQEAqQEAIY4BAQCpAQAhjwFAAKoBACGQAUAAywEAIZEBAQDHAQAhkgEgAMgBACEId0AAAAABeEAAAAAFeUAAAAAFekAAAAABe0AAAAABfEAAAAABfUAAAAABfkAAuQEAIRYDAADPAQAgBQAA0AEAIHEAAM0BADByAAADABBzAADNAQAwdkAAqgEAIYQBQACqAQAhhQEBAKkBACGHAQEAqQEAIYgBAQCpAQAhjAECAMIBACGNAQEAqQEAIZMBAQCpAQAhlAEBAKkBACGVAQEAqQEAIZYBAQCpAQAhlwEBAKkBACGYAQEAxwEAIZkBAgDOAQAhmgFAAMsBACGhAQAAAwAgogEAAAMAIBQDAADPAQAgBQAA0AEAIHEAAM0BADByAAADABBzAADNAQAwdkAAqgEAIYQBQACqAQAhhQEBAKkBACGHAQEAqQEAIYgBAQCpAQAhjAECAMIBACGNAQEAqQEAIZMBAQCpAQAhlAEBAKkBACGVAQEAqQEAIZYBAQCpAQAhlwEBAKkBACGYAQEAxwEAIZkBAgDOAQAhmgFAAMsBACEIdwIAAAABeAIAAAAFeQIAAAAFegIAAAABewIAAAABfAIAAAABfQIAAAABfgIAswEAIQ0HAADDAQAgCAAAxAEAIHEAAMEBADByAAAQABBzAADBAQAwhAFAAKoBACGFAQEAqQEAIYcBAQCpAQAhiAEBAKkBACGMAQIAwgEAIZsBAQCpAQAhoQEAABAAIKIBAAAQACADnAEAAAcAIJ0BAAAHACCeAQAABwAgAocBAQAAAAGIAQEAAAABAAAAAaYBAQAAAAEBpgFAAAAAAQAAAAAAAAABpgEgAAAAAQGmAQEAAAABBxUAALQCACAWAAC3AgAgowEAALUCACCkAQAAtgIAIKcBAAAQACCoAQAAEAAgqQEAAAEAIAMVAAC0AgAgowEAALUCACCpAQAAAQAgAAAAAAAFpgECAAAAAawBAgAAAAGtAQIAAAABrgECAAAAAa8BAgAAAAEBpgFAAAAAAQUVAACvAgAgFgAAsgIAIKMBAACwAgAgpAEAALECACCpAQAABQAgAxUAAK8CACCjAQAAsAIAIKkBAAAFACAAAAAAAAWmAQIAAAABrAECAAAAAa0BAgAAAAGuAQIAAAABrwECAAAAAQUVAACpAgAgFgAArQIAIKMBAACqAgAgpAEAAKwCACCpAQAAAQAgCxUAAPMBADAWAAD4AQAwowEAAPQBADCkAQAA9QEAMKUBAAD2AQAgpgEAAPcBADCnAQAA9wEAMKgBAAD3AQAwqQEAAPcBADCqAQAA-QEAMKsBAAD6AQAwCnZAAAAAAYQBQAAAAAGKAQEAAAABjAECAAAAAY0BAQAAAAGOAQEAAAABjwFAAAAAAZABQAAAAAGRAQEAAAABkgEgAAAAAQIAAAAJACAVAAD-AQAgAwAAAAkAIBUAAP4BACAWAAD9AQAgAQ4AAKsCADAPBAAAzAEAIHEAAMoBADByAAAHABBzAADKAQAwdkAAqgEAIYQBQACqAQAhigEBAAAAAYsBAQCpAQAhjAECAMIBACGNAQEAqQEAIY4BAQCpAQAhjwFAAKoBACGQAUAAywEAIZEBAQDHAQAhkgEgAMgBACECAAAACQAgDgAA_QEAIAIAAAD7AQAgDgAA_AEAIA5xAAD6AQAwcgAA-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_AQAgdkAAAAABhAFAAAAAAYUBAQAAAAGHAQEAAAABiAEBAAAAAYwBAgAAAAGNAQEAAAABkwEBAAAAAZQBAQAAAAGVAQEAAAABlgEBAAAAAZcBAQAAAAGYAQEAAAABmQECAAAAAZoBQAAAAAECAAAABQAgFQAArwIAIAMAAAADACAVAACvAgAgFgAAswIAIBIAAAADACADAADxAQAgDgAAswIAIHZAANYBACGEAUAA1gEAIYUBAQDVAQAhhwEBANUBACGIAQEA1QEAIYwBAgDnAQAhjQEBANUBACGTAQEA1QEAIZQBAQDVAQAhlQEBANUBACGWAQEA1QEAIZcBAQDVAQAhmAEBAN8BACGZAQIA8AEAIZoBQADoAQAhEAMAAPEBACB2QADWAQAhhAFAANYBACGFAQEA1QEAIYcBAQDVAQAhiAEBANUBACGMAQIA5wEAIY0BAQDVAQAhkwEBANUBACGUAQEA1QEAIZUBAQDVAQAhlgEBANUBACGXAQEA1QEAIZgBAQDfAQAhmQECAPABACGaAUAA6AEAIQcHAACgAgAghAFAAAAAAYUBAQAAAAGHAQEAAAABiAEBAAAAAYwBAgAAAAGbAQEAAAABAgAAAAEAIBUAALQCACADAAAAEAAgFQAAtAIAIBYAALgCACAJAAAAEAAgBwAAhgIAIA4AALgCACCEAUAA1gEAIYUBAQDVAQAhhwEBANUBACGIAQEA1QEAIYwBAgDnAQAhmwEBANUBACEHBwAAhgIAIIQBQADWAQAhhQEBANUBACGHAQEA1QEAIYgBAQDVAQAhjAECAOcBACGbAQEA1QEAIQMGAAYHBgIIDwUDAwABBQoDBgAEAQQAAgEFCwABAxEBAgcSAAgTAAAAAAUGAAsbAAwcAA0dAA4eAA8AAAAAAAUGAAsbAAwcAA0dAA4eAA8BAwABAQMAAQUGABQbABUcABYdABceABgAAAAAAAUGABQbABUcABYdABceABgBBAACAQQAAgUGAB0bAB4cAB8dACAeACEAAAAAAAUGAB0bAB4cAB8dACAeACEBA2ABAQNmAQMGACYdACceACgAAAADBgAmHQAnHgAoAAAAAwYALh0ALx4AMAAAAAMGAC4dAC8eADAAAAADBgA2HQA3HgA4AAAAAwYANh0ANx4AOAkCAQoUAQsWAQwXAQ0YAQ8aARAcBxEdCBIfARMhBxQiCRcjARgkARklBx8oCiApECEqAiIrAiMsAiQtAiUuAiYwAicyBygzESk1Aio3Bys4Eiw5Ai06Ai47By8-EzA_GTFAAzJBAzNCAzRDAzVEAzZGAzdIBzhJGjlLAzpNBztOGzxPAz1QAz5RBz9UHEBVIkFWBUJXBUNYBURZBUVaBUZcBUdeB0hfI0liBUpkB0tlJExnBU1oBU5pB09sJVBtKVFvKlJwKlNzKlR0KlV1KlZ3Kld5B1h6K1l8Klp-B1t_LFyAASpdgQEqXoIBB1-FAS1ghgExYYgBMmKJATJjjAEyZI0BMmWOATJmkAEyZ5IBB2iTATNplQEyapcBB2uYATRsmQEybZoBMm6bAQdvngE1cJ8BOQ"
31
+ strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"repository\",\"task\",\"tabs\",\"_count\",\"tasks\",\"environmentVars\",\"Repository.findUnique\",\"Repository.findUniqueOrThrow\",\"Repository.findFirst\",\"Repository.findFirstOrThrow\",\"Repository.findMany\",\"data\",\"Repository.createOne\",\"Repository.createMany\",\"Repository.createManyAndReturn\",\"Repository.updateOne\",\"Repository.updateMany\",\"Repository.updateManyAndReturn\",\"create\",\"update\",\"Repository.upsertOne\",\"Repository.deleteOne\",\"Repository.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"Repository.groupBy\",\"Repository.aggregate\",\"Task.findUnique\",\"Task.findUniqueOrThrow\",\"Task.findFirst\",\"Task.findFirstOrThrow\",\"Task.findMany\",\"Task.createOne\",\"Task.createMany\",\"Task.createManyAndReturn\",\"Task.updateOne\",\"Task.updateMany\",\"Task.updateManyAndReturn\",\"Task.upsertOne\",\"Task.deleteOne\",\"Task.deleteMany\",\"Task.groupBy\",\"Task.aggregate\",\"Tab.findUnique\",\"Tab.findUniqueOrThrow\",\"Tab.findFirst\",\"Tab.findFirstOrThrow\",\"Tab.findMany\",\"Tab.createOne\",\"Tab.createMany\",\"Tab.createManyAndReturn\",\"Tab.updateOne\",\"Tab.updateMany\",\"Tab.updateManyAndReturn\",\"Tab.upsertOne\",\"Tab.deleteOne\",\"Tab.deleteMany\",\"Tab.groupBy\",\"Tab.aggregate\",\"EnvironmentVariable.findUnique\",\"EnvironmentVariable.findUniqueOrThrow\",\"EnvironmentVariable.findFirst\",\"EnvironmentVariable.findFirstOrThrow\",\"EnvironmentVariable.findMany\",\"EnvironmentVariable.createOne\",\"EnvironmentVariable.createMany\",\"EnvironmentVariable.createManyAndReturn\",\"EnvironmentVariable.updateOne\",\"EnvironmentVariable.updateMany\",\"EnvironmentVariable.updateManyAndReturn\",\"EnvironmentVariable.upsertOne\",\"EnvironmentVariable.deleteOne\",\"EnvironmentVariable.deleteMany\",\"EnvironmentVariable.groupBy\",\"EnvironmentVariable.aggregate\",\"AgentProfile.findUnique\",\"AgentProfile.findUniqueOrThrow\",\"AgentProfile.findFirst\",\"AgentProfile.findFirstOrThrow\",\"AgentProfile.findMany\",\"AgentProfile.createOne\",\"AgentProfile.createMany\",\"AgentProfile.createManyAndReturn\",\"AgentProfile.updateOne\",\"AgentProfile.updateMany\",\"AgentProfile.updateManyAndReturn\",\"AgentProfile.upsertOne\",\"AgentProfile.deleteOne\",\"AgentProfile.deleteMany\",\"AgentProfile.groupBy\",\"AgentProfile.aggregate\",\"AppSetting.findUnique\",\"AppSetting.findUniqueOrThrow\",\"AppSetting.findFirst\",\"AppSetting.findFirstOrThrow\",\"AppSetting.findMany\",\"AppSetting.createOne\",\"AppSetting.createMany\",\"AppSetting.createManyAndReturn\",\"AppSetting.updateOne\",\"AppSetting.updateMany\",\"AppSetting.updateManyAndReturn\",\"AppSetting.upsertOne\",\"AppSetting.deleteOne\",\"AppSetting.deleteMany\",\"AppSetting.groupBy\",\"AppSetting.aggregate\",\"AND\",\"OR\",\"NOT\",\"key\",\"value\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"agent\",\"slug\",\"name\",\"createdAt\",\"agent_slug\",\"id\",\"scope\",\"owner\",\"repo\",\"enabled\",\"tabId\",\"taskId\",\"order\",\"status\",\"mode\",\"startedAt\",\"completedAt\",\"todos\",\"unread\",\"agentSessionId\",\"title\",\"description\",\"branch\",\"baseBranch\",\"repoId\",\"pullRequestUrl\",\"effort\",\"deletedAt\",\"cloneUrl\",\"every\",\"some\",\"none\",\"key_scope_owner_repo\",\"owner_repo\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
32
+ graph: "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_AQAAAAGAAQEAAAABgQEBAAAAAQUGAACkAQAgHQAAsgEAIB4AALIBACB3IAAAAAF-IACxAQAhBQYAAKQBACAdAACyAQAgHgAAsgEAIHcgAAAAAX4gALEBACECdyAAAAABfiAAsgEAIQ4GAAC0AQAgHQAAtQEAIB4AALUBACB3AQAAAAF4AQAAAAV5AQAAAAV6AQAAAAF7AQAAAAF8AQAAAAF9AQAAAAF-AQCzAQAhfwEAAAABgAEBAAAAAYEBAQAAAAEIdwIAAAABeAIAAAAFeQIAAAAFegIAAAABewIAAAABfAIAAAABfQIAAAABfgIAtAEAIQt3AQAAAAF4AQAAAAV5AQAAAAV6AQAAAAF7AQAAAAF8AQAAAAF9AQAAAAF-AQC1AQAhfwEAAAABgAEBAAAAAYEBAQAAAAEPcQAAtgEAMHIAAFMAEHMAALYBADB2QACiAQAhhQFAAKIBACGMAQEAoQEAIY0BAQChAQAhjgECALcBACGPAQEAoQEAIZABAQChAQAhkQFAAKIBACGSAUAAuAEAIZMBAQCvAQAhlAEgALABACGVAQEArwEAIQ0GAACkAQAgGwAAvAEAIBwAAKQBACAdAACkAQAgHgAApAEAIHcCAAAAAXgCAAAABHkCAAAABHoCAAAAAXsCAAAAAXwCAAAAAX0CAAAAAX4CALsBACELBgAAtAEAIB0AALoBACAeAAC6AQAgd0AAAAABeEAAAAAFeUAAAAAFekAAAAABe0AAAAABfEAAAAABfUAAAAABfkAAuQEAIQsGAAC0AQAgHQAAugEAIB4AALoBACB3QAAAAAF4QAAAAAV5QAAAAAV6QAAAAAF7QAAAAAF8QAAAAAF9QAAAAAF-QAC5AQAhCHdAAAAAAXhAAAAABXlAAAAABXpAAAAAAXtAAAAAAXxAAAAAAX1AAAAAAX5AALoBACENBgAApAEAIBsAALwBACAcAACkAQAgHQAApAEAIB4AAKQBACB3AgAAAAF4AgAAAAR5AgAAAAR6AgAAAAF7AgAAAAF8AgAAAAF9AgAAAAF-AgC7AQAhCHcIAAAAAXgIAAAABHkIAAAABHoIAAAAAXsIAAAAAXwIAAAAAX0IAAAAAX4IALwBACEScQAAvQEAMHIAAD0AEHMAAL0BADB2QACiAQAhhQFAAKIBACGHAQEAoQEAIYkBAQChAQAhigEBAKEBACGOAQIAtwEAIY8BAQChAQAhlgEBAKEBACGXAQEAoQEAIZgBAQChAQAhmQEBAKEBACGaAQEAoQEAIZsBAQCvAQAhnAECAL4BACGdAUAAuAEAIQ0GAAC0AQAgGwAAwAEAIBwAALQBACAdAAC0AQAgHgAAtAEAIHcCAAAAAXgCAAAABXkCAAAABXoCAAAAAXsCAAAAAXwCAAAAAX0CAAAAAX4CAL8BACENBgAAtAEAIBsAAMABACAcAAC0AQAgHQAAtAEAIB4AALQBACB3AgAAAAF4AgAAAAV5AgAAAAV6AgAAAAF7AgAAAAF8AgAAAAF9AgAAAAF-AgC_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-AEAMKsBAAD4AQAwrAEAAPgBADCtAQAA-gEAMK4BAAD7AQAwC3ZAAAAAAYUBQAAAAAGMAQEAAAABjgECAAAAAY8BAQAAAAGQAQEAAAABkQFAAAAAAZIBQAAAAAGTAQEAAAABlAEgAAAAAZUBAQAAAAECAAAACQAgFQAA_wEAIAMAAAAJACAVAAD_AQAgFgAA_gEAIAEOAACsAgAwEAQAAM0BACBxAADLAQAwcgAABwAQcwAAywEAMHZAAKoBACGFAUAAqgEAIYwBAQAAAAGNAQEAqQEAIY4BAgDDAQAhjwEBAKkBACGQAQEAqQEAIZEBQACqAQAhkgFAAMwBACGTAQEAyAEAIZQBIADJAQAhlQEBAMgBACECAAAACQAgDgAA_gEAIAIAAAD8AQAgDgAA_QEAIA9xAAD7AQAwcgAA_AEAEHMAAPsBADB2QACqAQAhhQFAAKoBACGMAQEAqQEAIY0BAQCpAQAhjgECAMMBACGPAQEAqQEAIZABAQCpAQAhkQFAAKoBACGSAUAAzAEAIZMBAQDIAQAhlAEgAMkBACGVAQEAyAEAIQ9xAAD7AQAwcgAA_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-UQc_VBxAVSJBVgVCVwVDWAVEWQVFWgVGXAVHXgdIXyNJYgVKZAdLZSRMZwVNaAVOaQdPbCVQbSlRbypScCpTcypUdCpVdSpWdypXeQdYeitZfCpafgdbfyxcgAEqXYEBKl6CAQdfhQEtYIYBMWGIATJiiQEyY4wBMmSNATJljgEyZpABMmeSAQdokwEzaZUBMmqXAQdrmAE0bJkBMm2aATJumwEHb54BNXCfATk"
33
33
  };
34
34
  async function decodeBase64AsWasm(wasmBase64) {
35
35
  const { Buffer } = await import('node:buffer');