@minimalcorp/tsunagi 0.3.3 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) 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/_05n88to._.js +3 -0
  42. package/.next/standalone/apps/web/.next/server/chunks/ssr/_0g.cd6a._.js +2 -2
  43. package/.next/standalone/apps/web/.next/server/chunks/ssr/{_0kflgfj._.js → _0pw3_r_._.js} +3 -3
  44. package/.next/standalone/apps/web/.next/server/chunks/ssr/{_0g79jqo._.js → _0rb6-mo._.js} +3 -3
  45. package/.next/standalone/apps/web/.next/server/chunks/ssr/_0ts4rpp._.js +3 -0
  46. package/.next/standalone/apps/web/.next/server/chunks/ssr/apps_web_src_app_settings_page_tsx_0i6itlb._.js +2 -2
  47. package/.next/standalone/apps/web/.next/server/chunks/ssr/apps_web_src_app_tasks_[id]_page_tsx_0jshsm2._.js +3 -3
  48. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_04pfam-._.js → node_modules_03-rvdo._.js} +1 -1
  49. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0cv326~._.js → node_modules_06jdmu~._.js} +1 -1
  50. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0a57phw._.js → node_modules_0925te2._.js} +2 -2
  51. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0_huoqd._.js → node_modules_0e8uni7._.js} +1 -1
  52. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0tod6y8._.js → node_modules_0h4h_aw._.js} +1 -1
  53. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0h.vgyn._.js → node_modules_0nzbb9~._.js} +1 -1
  54. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0oip5a1._.js → node_modules_0q8yuvq._.js} +1 -1
  55. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_11-z65a._.js → node_modules_0r6t2tu._.js} +1 -1
  56. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_09d2oqj._.js → node_modules_0t6ysh_._.js} +1 -1
  57. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0krwgny._.js → node_modules_0vj~e_v._.js} +1 -1
  58. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0sn0lqb._.js → node_modules_0vq~hzy._.js} +1 -1
  59. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0l23gkf._.js → node_modules_0xzmx-x._.js} +1 -1
  60. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0npujym._.js → node_modules_0yb2sh9._.js} +1 -1
  61. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0q_5qo~._.js → node_modules_0yc~s8p._.js} +1 -1
  62. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0q_xfyl._.js → node_modules_0zi-gfw._.js} +1 -1
  63. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0ak_3rk._.js → node_modules_0zzdoud._.js} +1 -1
  64. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0xp9nhx._.js → node_modules_0~aiu12._.js} +1 -1
  65. package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
  66. package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  67. package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  68. package/.next/standalone/apps/web/.next/server/server-reference-manifest.js +1 -1
  69. package/.next/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
  70. package/.next/standalone/apps/web/.next/static/chunks/09b_3duxnyfto.js +7 -0
  71. package/.next/standalone/apps/web/.next/static/chunks/{0z60ewb40i2ce.js → 0gxhy80~c0gvp.js} +1 -1
  72. package/.next/standalone/apps/web/.next/static/chunks/0i9h-39w91ybd.js +6 -0
  73. package/.next/standalone/apps/web/.next/static/chunks/{0b90ys7wq-p.4.css → 0pm0knaijueoc.css} +1 -1
  74. package/.next/standalone/apps/web/.next/static/chunks/{0oricprxoxb_d.js → 0smdykrt42e.5.js} +10 -10
  75. package/.next/standalone/apps/web/.next/static/chunks/{149sia28cskw9.js → 0yp~t_.pozr-d.js} +6 -6
  76. package/.next/standalone/apps/web/.next/static/chunks/{0o6ggm7jrim25.js → 14zh2vf8ljbxo.js} +1 -1
  77. package/.next/standalone/apps/web/.next/static/chunks/{053h220fng_68.js → 1624992q-gpj2.js} +10 -10
  78. package/.next/standalone/apps/web/package.json +1 -0
  79. package/README.md +1 -1
  80. package/dist/app.js +3 -3
  81. package/dist/plugin-lifecycle.d.ts +5 -3
  82. package/dist/plugin-lifecycle.js +40 -16
  83. package/dist/prisma/migrations/20261011000000_add_codex_support/migration.sql +20 -0
  84. package/dist/prisma/schema.prisma +9 -5
  85. package/dist/server/generated/prisma/browser.d.ts +2 -2
  86. package/dist/server/generated/prisma/client.d.ts +2 -2
  87. package/dist/server/generated/prisma/internal/class.d.ts +4 -4
  88. package/dist/server/generated/prisma/internal/class.js +4 -4
  89. package/dist/server/generated/prisma/internal/prismaNamespace.d.ts +41 -39
  90. package/dist/server/generated/prisma/internal/prismaNamespace.js +4 -2
  91. package/dist/server/generated/prisma/internal/prismaNamespaceBrowser.d.ts +5 -3
  92. package/dist/server/generated/prisma/internal/prismaNamespaceBrowser.js +4 -2
  93. package/dist/server/generated/prisma/models/AgentProfile.d.ts +972 -0
  94. package/dist/server/generated/prisma/models/Tab.d.ts +36 -1
  95. package/dist/server/generated/prisma/models.d.ts +1 -1
  96. package/dist/server/index.js +2 -2
  97. package/dist/server/lib/agent-profiles.d.ts +43 -0
  98. package/dist/server/lib/agent-profiles.js +127 -0
  99. package/dist/server/lib/agents/claude.d.ts +2 -0
  100. package/dist/server/lib/agents/claude.js +130 -0
  101. package/dist/server/lib/agents/cli.d.ts +14 -0
  102. package/dist/server/lib/agents/cli.js +57 -0
  103. package/dist/server/lib/agents/codex.d.ts +2 -0
  104. package/dist/server/lib/agents/codex.js +285 -0
  105. package/dist/server/lib/agents/index.d.ts +11 -0
  106. package/dist/server/lib/agents/index.js +19 -0
  107. package/dist/server/lib/agents/login-callback.d.ts +11 -0
  108. package/dist/server/lib/agents/login-callback.js +47 -0
  109. package/dist/server/lib/agents/types.d.ts +77 -0
  110. package/dist/server/lib/agents/types.js +8 -0
  111. package/dist/server/lib/pty-env-sync.js +1 -1
  112. package/dist/server/lib/pty-launch.d.ts +8 -10
  113. package/dist/server/lib/pty-launch.js +20 -58
  114. package/dist/server/lib/repositories/task.js +1 -0
  115. package/dist/server/lib/tab-todos.d.ts +5 -0
  116. package/dist/server/lib/tab-todos.js +13 -0
  117. package/dist/server/pty-manager.d.ts +7 -2
  118. package/dist/server/pty-manager.js +13 -0
  119. package/dist/server/routes/agent-profiles.d.ts +2 -0
  120. package/dist/server/routes/agent-profiles.js +193 -0
  121. package/dist/server/routes/env.js +2 -2
  122. package/dist/server/routes/hooks.d.ts +4 -19
  123. package/dist/server/routes/hooks.js +83 -73
  124. package/dist/server/routes/mcp.js +2 -2
  125. package/dist/server/routes/onboarding.js +19 -10
  126. package/dist/server/routes/tasks.js +4 -4
  127. package/dist/server/routes/terminal.js +47 -34
  128. package/dist/with-plugin.js +3 -3
  129. package/npm-shrinkwrap.json +12 -12
  130. package/package.json +1 -1
  131. package/tsunagi-marketplace/codex/tsunagi-task.md +120 -0
  132. package/.next/standalone/apps/web/.next/server/chunks/ssr/_0hnxatt._.js +0 -3
  133. package/.next/standalone/apps/web/.next/server/chunks/ssr/_10gk93.._.js +0 -3
  134. package/.next/standalone/apps/web/.next/static/chunks/0crn03y2tj0lu.js +0 -6
  135. package/.next/standalone/apps/web/.next/static/chunks/0lvl3ec93cab_.js +0 -7
  136. package/dist/server/generated/prisma/models/ClaudeProfile.d.ts +0 -939
  137. package/dist/server/lib/claude-profiles.d.ts +0 -49
  138. package/dist/server/lib/claude-profiles.js +0 -168
  139. package/dist/server/routes/claude-profiles.d.ts +0 -2
  140. package/dist/server/routes/claude-profiles.js +0 -138
  141. /package/.next/standalone/apps/web/.next/static/{7x81GlNKt9yqIkeI7U1BX → ZcOuTrikuO_ZLaERk7FsW}/_buildManifest.js +0 -0
  142. /package/.next/standalone/apps/web/.next/static/{7x81GlNKt9yqIkeI7U1BX → ZcOuTrikuO_ZLaERk7FsW}/_clientMiddlewareManifest.js +0 -0
  143. /package/.next/standalone/apps/web/.next/static/{7x81GlNKt9yqIkeI7U1BX → ZcOuTrikuO_ZLaERk7FsW}/_ssgManifest.js +0 -0
  144. /package/dist/server/generated/prisma/models/{ClaudeProfile.js → AgentProfile.js} +0 -0
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,7347,e=>{"use strict";var t=e.i(19805),r=e.i(27601),s=e.i(25913),a=e.i(52088);let n=(0,s.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"}});e.s(["Badge",0,function({className:e,variant:s="default",render:i,...u}){var c;return c={defaultTagName:"span",props:(0,t.mergeProps)({className:(0,a.cn)(n({variant:s}),e)},u),render:i,state:{slot:"badge",variant:s}},(0,r.useRenderElement)(c.defaultTagName??"div",c,c)}],7347)},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()}},[])}])},53134,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],53134);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(53134),l=e.i(801),o=e.i(7347),d=e.i(52088);let f={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 g({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)=>f[e.kind].order-f[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-card",children:[(0,t.jsxs)("div",{className:"flex h-8 shrink-0 box-content items-center gap-2 border-b border-border p-4",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Active"}),(0,t.jsx)(o.Badge,{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}=f[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,d.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,d.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)(g,{currentTaskId:s}),(0,t.jsx)("div",{className:"flex-1 min-w-0",children:e})]})}],22770)}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,7347,e=>{"use strict";var t=e.i(19805),r=e.i(27601),s=e.i(25913),a=e.i(52088);let n=(0,s.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"}});e.s(["Badge",0,function({className:e,variant:s="default",render:i,...u}){var c;return c={defaultTagName:"span",props:(0,t.mergeProps)({className:(0,a.cn)(n({variant:s}),e)},u),render:i,state:{slot:"badge",variant:s}},(0,r.useRenderElement)(c.defaultTagName??"div",c,c)}],7347)},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(7347),d=e.i(52088);let f={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 g({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)=>f[e.kind].order-f[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)(o.Badge,{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}=f[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,d.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,d.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)(g,{currentTaskId:s}),(0,t.jsx)("div",{className:"flex-1 min-w-0",children:e})]})}],22770)}]);