@minimalcorp/tsunagi 0.1.32 → 0.1.34

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 (136) 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.js.nft.json +1 -1
  12. package/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
  14. package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +13 -13
  15. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +13 -13
  16. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  17. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_index.segment.rsc +8 -8
  18. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  19. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  20. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
  22. package/.next/standalone/apps/web/.next/server/app/index.rsc +15 -16
  23. package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -5
  24. package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +15 -16
  25. package/.next/standalone/apps/web/.next/server/app/index.segments/_head.segment.rsc +4 -4
  26. package/.next/standalone/apps/web/.next/server/app/index.segments/_index.segment.rsc +8 -8
  27. package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +2 -3
  28. package/.next/standalone/apps/web/.next/server/app/page.js.nft.json +1 -1
  29. package/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/apps/web/.next/server/app/settings/page.js.nft.json +1 -1
  31. package/.next/standalone/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
  33. package/.next/standalone/apps/web/.next/server/app/settings.rsc +15 -15
  34. package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +15 -15
  35. package/.next/standalone/apps/web/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  36. package/.next/standalone/apps/web/.next/server/app/settings.segments/_index.segment.rsc +8 -8
  37. package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  38. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  39. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  40. package/.next/standalone/apps/web/.next/server/app/tasks/[id]/page.js.nft.json +1 -1
  41. package/.next/standalone/apps/web/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/apps/web/.next/server/chunks/ssr/[root-of-the-server]__08c7fz~._.js +3 -0
  43. package/.next/standalone/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0h4wzcb._.js +1 -1
  44. package/.next/standalone/apps/web/.next/server/chunks/ssr/{[root-of-the-server]__0tq9wv6._.js → [root-of-the-server]__0mct.7z._.js} +2 -2
  45. package/.next/standalone/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0nhzci6._.js +14 -0
  46. package/.next/standalone/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0ome304._.js +1 -1
  47. package/.next/standalone/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0vi01rl._.js +14 -0
  48. package/.next/standalone/apps/web/.next/server/chunks/ssr/{_0836rl_._.js → _02dcd~k._.js} +2 -2
  49. package/.next/standalone/apps/web/.next/server/chunks/ssr/{_03hz06e._.js → _0dar4c0._.js} +2 -2
  50. package/.next/standalone/apps/web/.next/server/chunks/ssr/_0g.cd6a._.js +17 -17
  51. package/.next/standalone/apps/web/.next/server/chunks/ssr/_0lpms0u._.js +3 -0
  52. package/.next/standalone/apps/web/.next/server/chunks/ssr/_0owas.l._.js +3 -0
  53. package/.next/standalone/apps/web/.next/server/chunks/ssr/{_0amxree._.js → _0sxye4q._.js} +2 -2
  54. package/.next/standalone/apps/web/.next/server/chunks/ssr/_109pmo2._.js +3 -0
  55. package/.next/standalone/apps/web/.next/server/chunks/ssr/apps_web_src_app_settings_page_tsx_0i6itlb._.js +1 -1
  56. package/.next/standalone/apps/web/.next/server/chunks/ssr/apps_web_src_app_tasks_[id]_page_tsx_0jshsm2._.js +23 -2
  57. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0dmu62y._.js → node_modules_07-e6tb._.js} +1 -1
  58. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0z0orm9._.js → node_modules_0b6fjwn._.js} +1 -1
  59. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_046ca89._.js → node_modules_0bix9lu._.js} +1 -1
  60. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0vm.f2d._.js → node_modules_0fpqbi2._.js} +1 -1
  61. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0v86kpj._.js → node_modules_0k8xmjr._.js} +1 -1
  62. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0jcrj-2._.js → node_modules_0r9vehj._.js} +1 -1
  63. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_065xsw3._.js → node_modules_0w48uk8._.js} +1 -1
  64. package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0c_-8tt._.js → node_modules_0yoat72._.js} +1 -1
  65. package/.next/standalone/apps/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_0zerlct._.js +3 -0
  66. package/.next/standalone/apps/web/.next/server/chunks/ssr/node_modules_next_dist_0xdsm99._.js +1 -1
  67. package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
  68. package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  69. package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  70. package/.next/standalone/apps/web/.next/server/server-reference-manifest.js +1 -1
  71. package/.next/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
  72. package/.next/standalone/apps/web/.next/static/chunks/00e8eue.21.8h.css +4 -0
  73. package/.next/standalone/apps/web/.next/static/chunks/08u0u06ip_aj0.js +5 -0
  74. package/.next/standalone/apps/web/.next/static/chunks/0e8u7rqrqfiiy.js +1 -0
  75. package/.next/standalone/apps/web/.next/static/chunks/0gfpx.h8alews.js +11 -0
  76. package/.next/standalone/apps/web/.next/static/chunks/0j3485~p9pn9n.js +1 -0
  77. package/.next/standalone/apps/web/.next/static/chunks/0k9kik1oc11wc.js +1 -0
  78. package/.next/standalone/apps/web/.next/static/chunks/0kmlu-0djf-rx.js +1 -0
  79. package/.next/standalone/apps/web/.next/static/chunks/0vlse5ga2r0n7.js +24 -0
  80. package/.next/standalone/apps/web/.next/static/chunks/0w-rozhi-~746.js +11 -0
  81. package/.next/standalone/apps/web/.next/static/chunks/0x3kp2s554oy5.js +64 -0
  82. package/.next/standalone/apps/web/.next/static/chunks/13f6kj~4r5x0p.js +1 -0
  83. package/dist/server/generated/prisma/browser.d.ts +0 -5
  84. package/dist/server/generated/prisma/client.d.ts +0 -5
  85. package/dist/server/generated/prisma/commonInputTypes.d.ts +52 -52
  86. package/dist/server/generated/prisma/internal/class.d.ts +0 -11
  87. package/dist/server/generated/prisma/internal/class.js +4 -4
  88. package/dist/server/generated/prisma/internal/prismaNamespace.d.ts +7 -91
  89. package/dist/server/generated/prisma/internal/prismaNamespace.js +2 -10
  90. package/dist/server/generated/prisma/internal/prismaNamespaceBrowser.d.ts +2 -11
  91. package/dist/server/generated/prisma/internal/prismaNamespaceBrowser.js +2 -10
  92. package/dist/server/generated/prisma/models/EnvironmentVariable.d.ts +0 -3
  93. package/dist/server/generated/prisma/models/Repository.d.ts +82 -1
  94. package/dist/server/generated/prisma/models/Tab.d.ts +39 -1
  95. package/dist/server/generated/prisma/models/Task.d.ts +0 -7
  96. package/dist/server/generated/prisma/models.d.ts +0 -1
  97. package/dist/server/index.js +0 -2
  98. package/dist/server/lib/repositories/repository.d.ts +7 -1
  99. package/dist/server/lib/repositories/repository.js +27 -29
  100. package/dist/server/lib/repositories/task.d.ts +5 -0
  101. package/dist/server/lib/repositories/task.js +13 -0
  102. package/dist/server/lib/worktree-manager.js +14 -2
  103. package/dist/server/routes/hooks.js +21 -1
  104. package/dist/server/routes/repos.js +93 -19
  105. package/dist/server/routes/tasks.js +20 -0
  106. package/npm-shrinkwrap.json +85 -76
  107. package/package.json +1 -1
  108. package/prisma/migrations/20260915000000_drop_planner_tabs/migration.sql +3 -0
  109. package/prisma/migrations/20260916000000_add_repository_order/migration.sql +12 -0
  110. package/prisma/migrations/20260918000000_add_tab_unread/migration.sql +4 -0
  111. package/prisma/schema.prisma +3 -13
  112. package/.next/standalone/apps/web/.next/server/chunks/ssr/[root-of-the-server]__053-iaj._.js +0 -3
  113. package/.next/standalone/apps/web/.next/server/chunks/ssr/[root-of-the-server]__07kf5h-._.js +0 -35
  114. package/.next/standalone/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0_gamc9._.js +0 -35
  115. package/.next/standalone/apps/web/.next/server/chunks/ssr/apps_web_src_0w0y9fd._.js +0 -3
  116. package/.next/standalone/apps/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_0_.o928._.js +0 -3
  117. package/.next/standalone/apps/web/.next/static/chunks/0.1pdl3yo~xet.js +0 -5
  118. package/.next/standalone/apps/web/.next/static/chunks/001oo2jah4cv9.js +0 -1
  119. package/.next/standalone/apps/web/.next/static/chunks/05b63w8.ny19p.js +0 -1
  120. package/.next/standalone/apps/web/.next/static/chunks/08dtfekvxgpfu.js +0 -1
  121. package/.next/standalone/apps/web/.next/static/chunks/0dpeys_k2-mrk.js +0 -32
  122. package/.next/standalone/apps/web/.next/static/chunks/0hvtxos.brr01.js +0 -1
  123. package/.next/standalone/apps/web/.next/static/chunks/0nh1-0lee-1pk.js +0 -32
  124. package/.next/standalone/apps/web/.next/static/chunks/0nhpg19g1rl_7.js +0 -1
  125. package/.next/standalone/apps/web/.next/static/chunks/0tggf01u1vugi.js +0 -3
  126. package/.next/standalone/apps/web/.next/static/chunks/0wxrfu5la_s94.js +0 -64
  127. package/.next/standalone/apps/web/.next/static/chunks/0zu48yvkl8pyj.css +0 -4
  128. package/.next/standalone/apps/web/.next/static/chunks/13twvr.qg3khh.js +0 -1
  129. package/.next/standalone/apps/web/.next/static/chunks/164p.6qr5~-7x.js +0 -1
  130. package/dist/server/generated/prisma/models/PlannerTab.d.ts +0 -1089
  131. package/dist/server/generated/prisma/models/PlannerTab.js +0 -1
  132. package/dist/server/routes/planner.d.ts +0 -2
  133. package/dist/server/routes/planner.js +0 -86
  134. /package/.next/standalone/apps/web/.next/static/{70bPr4pgLIE7loeTg62ih → mWBhkmlLJfxVxMeoAXXc3}/_buildManifest.js +0 -0
  135. /package/.next/standalone/apps/web/.next/static/{70bPr4pgLIE7loeTg62ih → mWBhkmlLJfxVxMeoAXXc3}/_clientMiddlewareManifest.js +0 -0
  136. /package/.next/standalone/apps/web/.next/static/{70bPr4pgLIE7loeTg62ih → mWBhkmlLJfxVxMeoAXXc3}/_ssgManifest.js +0 -0
@@ -1,3 +0,0 @@
1
- module.exports=[80087,a=>{"use strict";var b=a.i(87924),c=a.i(72131);let d=(0,c.createContext)(void 0);function e(){return"system"}a.s(["ThemeProvider",0,function({children:a}){let[f,g]=(0,c.useState)(e),[h,i]=(0,c.useState)("light");return(0,c.useEffect)(()=>{let a=window.matchMedia("(prefers-color-scheme: dark)"),b=document.documentElement,c=()=>{let c="system"===f?a.matches?"dark":"light":f;i(c),b.classList.toggle("dark","dark"===c)};c();let d=()=>{"system"===f&&c()};return a.addEventListener("change",d),()=>a.removeEventListener("change",d)},[f]),(0,b.jsx)(d.Provider,{value:{theme:f,setTheme:a=>{g(a),localStorage.setItem("theme",a),"system"===a?i(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"):i(a)},effectiveTheme:h},children:a})},"useTheme",0,function(){let a=(0,c.useContext)(d);if(void 0===a)throw Error("useTheme must be used within a ThemeProvider");return a}])},53155,77928,a=>{"use strict";var b,c,d=a.i(87924),e=a.i(72131);function f(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function g(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function h(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?g(Object(c),!0).forEach(function(b){var d;d=c[b],b in a?Object.defineProperty(a,b,{value:d,enumerable:!0,configurable:!0,writable:!0}):a[b]=d}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):g(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}function i(a){return function b(){for(var c=this,d=arguments.length,e=Array(d),f=0;f<d;f++)e[f]=arguments[f];return e.length>=a.length?a.apply(this,e):function(){for(var a=arguments.length,d=Array(a),f=0;f<a;f++)d[f]=arguments[f];return b.apply(c,[].concat(e,d))}}}function j(a){return({}).toString.call(a).includes("Object")}function k(a){return"function"==typeof a}var l=i(function(a,b){throw Error(a[b]||a.default)})({initialIsRequired:"initial state is required",initialType:"initial state should be an object",initialContent:"initial state shouldn't be an empty object",handlerType:"handler should be an object or a function",handlersType:"all handlers should be a functions",selectorType:"selector should be a function",changeType:"provided value of changes should be an object",changeField:'it seams you want to change a field in the state which is not specified in the "initial" state',default:"an unknown error accured in `state-local` package"}),m=function(a,b){return j(b)||l("changeType"),Object.keys(b).some(function(b){return!Object.prototype.hasOwnProperty.call(a,b)})&&l("changeField"),b},n=function(a){k(a)||l("selectorType")},o=function(a){k(a)||j(a)||l("handlerType"),j(a)&&Object.values(a).some(function(a){return!k(a)})&&l("handlersType")},p=function(a){a||l("initialIsRequired"),j(a)||l("initialType"),Object.keys(a).length||l("initialContent")};function q(a,b){return k(b)?b(a.current):b}function r(a,b){return a.current=h(h({},a.current),b),b}function s(a,b,c){return k(b)?b(a.current):Object.keys(c).forEach(function(c){var d;return null==(d=b[c])?void 0:d.call(b,a.current[c])}),c}var t={configIsRequired:"the configuration object is required",configType:"the configuration object should be an object",default:"an unknown error accured in `@monaco-editor/loader` package",deprecation:"Deprecation warning!\n You are using deprecated way of configuration.\n\n Instead of using\n monaco.config({ urls: { monacoBase: '...' } })\n use\n monaco.config({ paths: { vs: '...' } })\n\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\n "},u=(b=function(a,b){throw Error(a[b]||a.default)},function a(){for(var c=this,d=arguments.length,e=Array(d),f=0;f<d;f++)e[f]=arguments[f];return e.length>=b.length?b.apply(this,e):function(){for(var b=arguments.length,d=Array(b),f=0;f<b;f++)d[f]=arguments[f];return a.apply(c,[].concat(e,d))}})(t),v=function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return function(a){return b.reduceRight(function(a,b){return b(a)},a)}},w={type:"cancelation",msg:"operation is manually canceled"};function x(a){var b=!1,c=new Promise(function(c,d){a.then(function(a){return b?d(w):c(a)}),a.catch(d)});return c.cancel=function(){return b=!0},c}var y=function(a){if(Array.isArray(a))return a}(c=({create:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};p(a),o(b);var c={current:a},d=i(s)(c,b),e=i(r)(c),f=i(m)(a),g=i(q)(c);return[function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(a){return a};return n(a),a(c.current)},function(a){(function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return function(a){return b.reduceRight(function(a,b){return b(a)},a)}})(d,e,f,g)(a)}]}}).create({config:{paths:{vs:"https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs"}},isInitialized:!1,resolve:null,reject:null,monaco:null}))||function(a){var b=null==a?null:"u">typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=b){var c,d,e,f,g=[],h=!0,i=!1;try{e=(b=b.call(a)).next,!1;for(;!(h=(c=e.call(b)).done)&&(g.push(c.value),2!==g.length);h=!0);}catch(a){i=!0,d=a}finally{try{if(!h&&null!=b.return&&(f=b.return(),Object(f)!==f))return}finally{if(i)throw d}}return g}}(c)||function(a){if(a){if("string"==typeof a)return f(a,2);var b=({}).toString.call(a).slice(8,-1);return"Object"===b&&a.constructor&&(b=a.constructor.name),"Map"===b||"Set"===b?Array.from(a):"Arguments"===b||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(b)?f(a,2):void 0}}(c)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),z=y[0],A=y[1];function B(a){return document.body.appendChild(a)}function C(a){var b,c,d=z(function(a){return{config:a.config,reject:a.reject}}),e=(b="".concat(d.config.paths.vs,"/loader.js"),c=document.createElement("script"),b&&(c.src=b),c);return e.onload=function(){return a()},e.onerror=d.reject,e}function D(){var a=z(function(a){return{config:a.config,resolve:a.resolve,reject:a.reject}}),b=window.require;b.config(a.config),b(["vs/editor/editor.main"],function(b){var c=b.m||b;E(c),a.resolve(c)},function(b){a.reject(b)})}function E(a){z().monaco||A({monaco:a})}var F=new Promise(function(a,b){return A({resolve:a,reject:b})}),G=function(){var a=z(function(a){return{monaco:a.monaco,isInitialized:a.isInitialized,resolve:a.resolve}});if(!a.isInitialized){if(A({isInitialized:!0}),a.monaco)return a.resolve(a.monaco),x(F);if(window.monaco&&window.monaco.editor)return E(window.monaco),a.resolve(window.monaco),x(F);v(B,C)(D)}return x(F)},H={display:"flex",position:"relative",textAlign:"initial"},I={width:"100%"},J={display:"none"},K={display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"},L=function({children:a}){return e.default.createElement("div",{style:K},a)},M=(0,e.memo)(function({width:a,height:b,isEditorReady:c,loading:d,_ref:f,className:g,wrapperProps:h}){return e.default.createElement("section",{style:{...H,width:a,height:b},...h},!c&&e.default.createElement(L,null,d),e.default.createElement("div",{ref:f,style:{...I,...!c&&J},className:g}))}),N=function(a){(0,e.useEffect)(a,[])},O=function(a,b,c=!0){let d=(0,e.useRef)(!0);(0,e.useEffect)(d.current||!c?()=>{d.current=!1}:a,b)};function P(){}function Q(a,b,c,d){var e,f,g,h,i,j;return e=a,f=d,e.editor.getModel(R(e,f))||(g=a,h=b,i=c,j=d,g.editor.createModel(h,i,j?R(g,j):void 0))}function R(a,b){return a.Uri.parse(b)}(0,e.memo)(function({original:a,modified:b,language:c,originalLanguage:d,modifiedLanguage:f,originalModelPath:g,modifiedModelPath:h,keepCurrentOriginalModel:i=!1,keepCurrentModifiedModel:j=!1,theme:k="light",loading:l="Loading...",options:m={},height:n="100%",width:o="100%",className:p,wrapperProps:q={},beforeMount:r=P,onMount:s=P}){let[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(!0),x=(0,e.useRef)(null),y=(0,e.useRef)(null),z=(0,e.useRef)(null),A=(0,e.useRef)(s),B=(0,e.useRef)(r),C=(0,e.useRef)(!1);N(()=>{let a=G();return a.then(a=>(y.current=a)&&w(!1)).catch(a=>a?.type!=="cancelation"&&console.error("Monaco initialization: error:",a)),()=>{let b;return x.current?(b=x.current?.getModel(),void(i||b?.original?.dispose(),j||b?.modified?.dispose(),x.current?.dispose())):a.cancel()}}),O(()=>{if(x.current&&y.current){let b=x.current.getOriginalEditor(),e=Q(y.current,a||"",d||c||"text",g||"");e!==b.getModel()&&b.setModel(e)}},[g],t),O(()=>{if(x.current&&y.current){let a=x.current.getModifiedEditor(),d=Q(y.current,b||"",f||c||"text",h||"");d!==a.getModel()&&a.setModel(d)}},[h],t),O(()=>{let a=x.current.getModifiedEditor();a.getOption(y.current.editor.EditorOption.readOnly)?a.setValue(b||""):b!==a.getValue()&&(a.executeEdits("",[{range:a.getModel().getFullModelRange(),text:b||"",forceMoveMarkers:!0}]),a.pushUndoStop())},[b],t),O(()=>{x.current?.getModel()?.original.setValue(a||"")},[a],t),O(()=>{let{original:a,modified:b}=x.current.getModel();y.current.editor.setModelLanguage(a,d||c||"text"),y.current.editor.setModelLanguage(b,f||c||"text")},[c,d,f],t),O(()=>{y.current?.editor.setTheme(k)},[k],t),O(()=>{x.current?.updateOptions(m)},[m],t);let D=(0,e.useCallback)(()=>{if(!y.current)return;B.current(y.current);let e=Q(y.current,a||"",d||c||"text",g||""),i=Q(y.current,b||"",f||c||"text",h||"");x.current?.setModel({original:e,modified:i})},[c,b,f,a,d,g,h]),E=(0,e.useCallback)(()=>{!C.current&&z.current&&(x.current=y.current.editor.createDiffEditor(z.current,{automaticLayout:!0,...m}),D(),y.current?.editor.setTheme(k),u(!0),C.current=!0)},[m,k,D]);return(0,e.useEffect)(()=>{t&&A.current(x.current,y.current)},[t]),(0,e.useEffect)(()=>{v||t||E()},[v,t,E]),e.default.createElement(M,{width:o,height:n,isEditorReady:t,loading:l,_ref:z,className:p,wrapperProps:q})});var S=function(a){let b=(0,e.useRef)();return(0,e.useEffect)(()=>{b.current=a},[a]),b.current},T=new Map,U=(0,e.memo)(function({defaultValue:a,defaultLanguage:b,defaultPath:c,value:d,language:f,path:g,theme:h="light",line:i,loading:j="Loading...",options:k={},overrideServices:l={},saveViewState:m=!0,keepCurrentModel:n=!1,width:o="100%",height:p="100%",className:q,wrapperProps:r={},beforeMount:s=P,onMount:t=P,onChange:u,onValidate:v=P}){let[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(!0),A=(0,e.useRef)(null),B=(0,e.useRef)(null),C=(0,e.useRef)(null),D=(0,e.useRef)(t),E=(0,e.useRef)(s),F=(0,e.useRef)(),H=(0,e.useRef)(d),I=S(g),J=(0,e.useRef)(!1),K=(0,e.useRef)(!1);N(()=>{let a=G();return a.then(a=>(A.current=a)&&z(!1)).catch(a=>a?.type!=="cancelation"&&console.error("Monaco initialization: error:",a)),()=>B.current?void(F.current?.dispose(),n?m&&T.set(g,B.current.saveViewState()):B.current.getModel()?.dispose(),B.current.dispose()):a.cancel()}),O(()=>{let e=Q(A.current,a||d||"",b||f||"",g||c||"");e!==B.current?.getModel()&&(m&&T.set(I,B.current?.saveViewState()),B.current?.setModel(e),m&&B.current?.restoreViewState(T.get(g)))},[g],w),O(()=>{B.current?.updateOptions(k)},[k],w),O(()=>{B.current&&void 0!==d&&(B.current.getOption(A.current.editor.EditorOption.readOnly)?B.current.setValue(d):d!==B.current.getValue()&&(K.current=!0,B.current.executeEdits("",[{range:B.current.getModel().getFullModelRange(),text:d,forceMoveMarkers:!0}]),B.current.pushUndoStop(),K.current=!1))},[d],w),O(()=>{let a=B.current?.getModel();a&&f&&A.current?.editor.setModelLanguage(a,f)},[f],w),O(()=>{void 0!==i&&B.current?.revealLine(i)},[i],w),O(()=>{A.current?.editor.setTheme(h)},[h],w);let L=(0,e.useCallback)(()=>{if(!(!C.current||!A.current)&&!J.current){E.current(A.current);let e=g||c,j=Q(A.current,d||a||"",b||f||"",e||"");B.current=A.current?.editor.create(C.current,{model:j,automaticLayout:!0,...k},l),m&&B.current.restoreViewState(T.get(e)),A.current.editor.setTheme(h),void 0!==i&&B.current.revealLine(i),x(!0),J.current=!0}},[a,b,c,d,f,g,k,l,m,h,i]);return(0,e.useEffect)(()=>{w&&D.current(B.current,A.current)},[w]),(0,e.useEffect)(()=>{y||w||L()},[y,w,L]),H.current=d,(0,e.useEffect)(()=>{w&&u&&(F.current?.dispose(),F.current=B.current?.onDidChangeModelContent(a=>{K.current||u(B.current.getValue(),a)}))},[w,u]),(0,e.useEffect)(()=>{if(w){let a=A.current.editor.onDidChangeMarkers(a=>{let b=B.current.getModel()?.uri;if(b&&a.find(a=>a.path===b.path)){let a=A.current.editor.getModelMarkers({resource:b});v?.(a)}});return()=>{a?.dispose()}}return()=>{}},[w,v]),e.default.createElement(M,{width:o,height:p,isEditorReady:w,loading:j,_ref:C,className:q,wrapperProps:r})});a.s(["Editor",0,U],77928);var V=a.i(80087),W=a.i(90002),X=a.i(39524);let Y="u">typeof navigator&&/Mac/.test(navigator.platform);function Z(a){let b=a.getModel();if(!b)return;let c=b.getLineCount(),d=b.getLineMaxColumn(c);a.setPosition({lineNumber:c,column:d})}a.s(["MonacoEditorModal",0,function({open:a,onOpenChange:b,onSubmit:c,initialValue:f="",title:g="Editor",submitLabel:h="Submit",language:i="plaintext"}){let j=(0,e.useRef)(null),k=(0,e.useRef)(()=>{}),l=(0,e.useRef)(()=>{}),m=(0,e.useRef)(a),[n,o]=(0,e.useState)(!1),{effectiveTheme:p}=(0,V.useTheme)();function q(){c(j.current?.getValue()??"")}function r(){j.current?.setValue(""),b({open:!1})}return(0,e.useLayoutEffect)(()=>{k.current=q,l.current=r,m.current=a}),(0,e.useEffect)(()=>{if(!a||!j.current)return;j.current.setValue(f??""),Z(j.current),j.current.layout();let b=setTimeout(()=>{m.current&&(j.current?.layout(),j.current?.focus())},50);return()=>clearTimeout(b)},[a,f]),(0,d.jsx)(W.Dialog,{open:a,onOpenChange:a=>{a.open||(j.current?.setValue(""),b(a))},title:g,maxWidth:"4xl",showCloseButton:!0,trapFocus:!1,restoreFocus:!1,dismissOnEsc:!n,children:(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("div",{className:"border border-border rounded overflow-hidden",style:{height:"clamp(200px, 50vh, 600px)"},children:(0,d.jsx)(U,{height:"100%",defaultLanguage:i,defaultValue:"",onMount:(a,b)=>{j.current=a,a.setValue(f??""),Z(a),a.onDidLayoutChange(()=>{m.current&&!a.hasTextFocus()&&a.focus()}),a.onDidFocusEditorText(()=>o(!0)),a.onDidBlurEditorText(()=>o(!1)),a.layout(),a.focus(),a.onKeyDown(a=>{a.keyCode===b.KeyCode.Enter&&(a.metaKey||a.ctrlKey)&&(a.preventDefault(),a.stopPropagation(),k.current())})},options:{minimap:{enabled:!1},lineNumbers:"on",wordWrap:"on",fontSize:13,scrollBeyondLastLine:!1},theme:"dark"===p?"vs-dark":"vs-light"})}),(0,d.jsxs)("p",{className:"text-xs text-muted-foreground",children:[Y?"Cmd+Enter":"Ctrl+Enter"," で",h]}),(0,d.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,d.jsx)(X.Button,{variant:"outline",size:"lg",onClick:r,children:"Cancel"}),(0,d.jsx)(X.Button,{size:"lg",onClick:q,children:h})]})]})})}],53155)}];
2
-
3
- //# sourceMappingURL=apps_web_src_0w0y9fd._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[210,a=>{"use strict";let b=(0,a.i(60137).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",0,b],210)},11989,a=>{"use strict";let b=(0,a.i(60137).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["default",0,b])},99464,a=>{"use strict";let b=(0,a.i(60137).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);a.s(["Pencil",0,b],99464)},10948,a=>{"use strict";let b=(0,a.i(60137).default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);a.s(["GitBranch",0,b],10948)},15618,49594,a=>{"use strict";let b=(0,a.i(60137).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);a.s(["Plus",0,b],15618);let c=[{bg:"bg-blue-100 dark:bg-blue-900/30",text:"text-blue-700 dark:text-blue-300"},{bg:"bg-emerald-100 dark:bg-emerald-900/30",text:"text-emerald-700 dark:text-emerald-300"},{bg:"bg-violet-100 dark:bg-violet-900/30",text:"text-violet-700 dark:text-violet-300"},{bg:"bg-amber-100 dark:bg-amber-900/30",text:"text-amber-700 dark:text-amber-300"},{bg:"bg-rose-100 dark:bg-rose-900/30",text:"text-rose-700 dark:text-rose-300"},{bg:"bg-cyan-100 dark:bg-cyan-900/30",text:"text-cyan-700 dark:text-cyan-300"},{bg:"bg-orange-100 dark:bg-orange-900/30",text:"text-orange-700 dark:text-orange-300"},{bg:"bg-teal-100 dark:bg-teal-900/30",text:"text-teal-700 dark:text-teal-300"},{bg:"bg-indigo-100 dark:bg-indigo-900/30",text:"text-indigo-700 dark:text-indigo-300"},{bg:"bg-pink-100 dark:bg-pink-900/30",text:"text-pink-700 dark:text-pink-300"},{bg:"bg-lime-100 dark:bg-lime-900/30",text:"text-lime-700 dark:text-lime-300"},{bg:"bg-fuchsia-100 dark:bg-fuchsia-900/30",text:"text-fuchsia-700 dark:text-fuchsia-300"}];a.s(["getRepoColor",0,function(a,b){let d=function(a){let b=5381;for(let c=0;c<a.length;c++)b=33*b^a.charCodeAt(c);return b>>>0}(`${a}/${b}`)%c.length;return c[d]}],49594)}];
2
-
3
- //# sourceMappingURL=node_modules_lucide-react_dist_esm_icons_0_.o928._.js.map
@@ -1,5 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,82341,e=>{"use strict";var t=e.i(18050),s=e.i(71645),a=e.i(18566),r=e.i(471),l=e.i(70935),n=e.i(75254);let o=(0,n.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]),i=(0,n.default)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);var c=e.i(55716),d=e.i(46349),d=d;let u=(0,n.default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var x=e.i(85902);function m({node:e,isSelected:s,isExpanded:a,depth:r,onSelect:l,onToggle:n}){let p=e.children&&e.children.length>0;return(0,t.jsxs)("div",{onClick:()=>{l(),p&&n&&!a&&n()},className:`
2
- flex items-center gap-2 px-2 py-1.5 rounded cursor-pointer
3
- transition-colors
4
- ${s?"bg-accent":"hover:bg-accent"}
5
- `,style:{paddingLeft:`${16*r+8}px`},children:[p&&(0,t.jsx)(x.Button,{variant:"ghost",size:"icon-xs",onClick:e=>{e.stopPropagation(),n&&n()},className:"size-4",children:a?(0,t.jsx)(u,{className:"w-3 h-3 text-muted-foreground"}):(0,t.jsx)(d.default,{className:"w-3 h-3 text-muted-foreground"})}),!p&&(0,t.jsx)("div",{className:"w-3"}),(0,t.jsx)("div",{className:"text-foreground",children:(()=>{switch(e.type){case"global":return(0,t.jsx)(o,{className:"w-4 h-4"});case"owner":return(0,t.jsx)(i,{className:"w-4 h-4"});case"repo":return(0,t.jsx)(c.GitBranch,{className:"w-4 h-4"})}})()}),(0,t.jsx)("span",{className:"text-sm text-foreground truncate",children:e.label})]})}function p({selectedNode:e,onNodeSelect:a,refreshKey:r}){let[n,o]=(0,s.useState)([]),[i,c]=(0,s.useState)(new Set),[d,u]=(0,s.useState)(!0);(0,s.useEffect)(()=>{let e=localStorage.getItem("tsunagi:env-tree-expanded");if(e)try{let t=JSON.parse(e);c(new Set(t))}catch(e){console.error("Failed to parse expanded owners:",e)}},[]),(0,s.useEffect)(()=>{localStorage.setItem("tsunagi:env-tree-expanded",JSON.stringify([...i]))},[i]),(0,s.useEffect)(()=>{(async()=>{u(!0);try{let e=await fetch((0,l.apiUrl)("/api/owners"));if(!e.ok)throw Error("Failed to fetch owners");let t=((await e.json()).data.owners||[]).map(e=>({id:`owner:${e.name}`,type:"owner",label:e.name,scope:"owner",owner:e.name,children:e.repositories.map(e=>({id:`repo:${e.owner}/${e.repo}`,type:"repo",label:e.repo,scope:"repo",owner:e.owner,repo:e.repo}))}));o([{id:"global",type:"global",label:"Global",scope:"global"},...t])}catch(e){console.error("Failed to load tree:",e)}finally{u(!1)}})()},[r]);let x=(s,r=0)=>{let l=e?.scope===s.scope&&e?.owner===s.owner&&e?.repo===s.repo,n=i.has(s.id);return(0,t.jsxs)("div",{children:[(0,t.jsx)(m,{node:s,isSelected:l,isExpanded:n,depth:r,onSelect:()=>{a({scope:s.scope,owner:s.owner,repo:s.repo,label:s.label})},onToggle:()=>{var e;return e=s.id,void c(t=>{let s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})}}),n&&s.children?.map(e=>x(e,r+1))]},s.id)};return d?(0,t.jsx)("div",{className:"p-4 text-muted-foreground text-sm",children:"Loading..."}):0===n.length?(0,t.jsx)("div",{className:"p-4 text-muted-foreground text-sm",children:"No repositories found"}):(0,t.jsx)("div",{className:"h-full overflow-y-auto",children:(0,t.jsx)("div",{className:"p-2",children:n.map(e=>x(e))})})}var h=e.i(7233),f=e.i(37727),v=e.i(43531),j=e.i(86536);let g=(0,n.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);var w=e.i(27612),y=e.i(88699),N=e.i(10012);function b({variable:e,onToggle:a,onDelete:r,onUpdate:l,isDeletable:n=!0}){let[o,i]=(0,s.useState)(!1),[c,d]=(0,s.useState)(!1),[u,m]=(0,s.useState)(!1),[p,h]=(0,s.useState)(e.value),k=async t=>{d(!0);try{await a(e.key,t.target.checked)}finally{d(!1)}},C=async()=>{await r(e.key)},S=async()=>{try{await l(e.key,p),m(!1)}catch(e){console.error("Failed to update variable:",e),alert("Failed to update variable")}};return(0,t.jsxs)("div",{className:"border border-border rounded p-3 space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-sm font-mono text-foreground",children:e.key}),!u&&(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:e.enabled,onChange:k,disabled:c,className:"w-4 h-4 cursor-pointer"}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:"Enabled"})]}),(0,t.jsx)(x.Button,{variant:"ghost",size:"icon-lg",onClick:()=>i(!o),title:o?"Hide value":"Show value",children:o?(0,t.jsx)(g,{className:"w-4 h-4 text-muted-foreground"}):(0,t.jsx)(j.Eye,{className:"w-4 h-4 text-muted-foreground"})}),(0,t.jsx)(x.Button,{variant:"ghost",size:"icon-lg",onClick:()=>{m(!0),h(e.value)},title:"Edit",children:(0,t.jsx)(y.Pencil,{className:"w-4 h-4 text-muted-foreground"})}),n&&(0,t.jsx)(x.Button,{variant:"ghost",size:"icon-lg",onClick:C,title:"Delete",children:(0,t.jsx)(w.Trash2,{className:"w-4 h-4 text-destructive"})})]})]}),u?(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(N.Input,{type:"password",value:p,onChange:e=>h(e.target.value),className:"w-full font-mono",autoFocus:!0}),(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsx)(x.Button,{variant:"outline",size:"sm",onClick:()=>{m(!1),h(e.value)},className:"active:scale-95",children:(0,t.jsx)(f.X,{className:"w-4 h-4"})}),(0,t.jsx)(x.Button,{size:"sm",onClick:S,className:"active:scale-95",children:(0,t.jsx)(v.Check,{className:"w-4 h-4"})})]})]}):(0,t.jsx)("div",{children:(0,t.jsx)(N.Input,{type:o?"text":"password",value:e.value,readOnly:!0,className:"w-full font-mono"})})]})}var k=e.i(37870);let C=["ANTHROPIC_API_KEY","CLAUDE_CODE_OAUTH_TOKEN"];function S({selectedNode:e}){let[a,r]=(0,s.useState)([]),[n,o]=(0,s.useState)(!0),[i,c]=(0,s.useState)(null),[d,u]=(0,s.useState)(!1),[m,p]=(0,s.useState)(""),[j,g]=(0,s.useState)(""),[w,y]=(0,s.useState)("");(0,s.useEffect)(()=>{(async()=>{o(!0),c(null);try{let t=new URLSearchParams({scope:e.scope});e.owner&&t.set("owner",e.owner),e.repo&&t.set("repo",e.repo);let s=await fetch((0,l.apiUrl)(`/api/env/list?${t}`));if(!s.ok)throw Error("Failed to fetch environment variables");let a=((await s.json()).data.envVars||[]).filter(e=>!C.includes(e.key));r(a)}catch(e){console.error("Failed to load environment variables:",e),c("Failed to load environment variables")}finally{o(!1)}})()},[e]);let E=async(t,s)=>{if("global"===e.scope&&!s&&("ANTHROPIC_API_KEY"===t||"CLAUDE_CODE_OAUTH_TOKEN"===t)&&!a.find(e=>e.key!==t&&("ANTHROPIC_API_KEY"===e.key||"CLAUDE_CODE_OAUTH_TOKEN"===e.key)&&e.enabled))return void alert("Cannot disable the last enabled Claude Token. Please add or enable another Claude Token first.");try{if(!(await fetch((0,l.apiUrl)("/api/env/toggle"),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:t,scope:e.scope,owner:e.owner,repo:e.repo,enabled:s})})).ok)throw Error("Failed to toggle environment variable");r(e=>e.map(e=>e.key===t?{...e,enabled:s}:e))}catch(e){console.error("Failed to toggle environment variable:",e),r(e=>e.map(e=>e.key===t?{...e,enabled:!s}:e))}},T=async t=>{if(confirm(`Delete ${t}?`))try{let s=new URLSearchParams({key:t,scope:e.scope});if(e.owner&&s.set("owner",e.owner),e.repo&&s.set("repo",e.repo),!(await fetch((0,l.apiUrl)(`/api/env?${s}`),{method:"DELETE"})).ok)throw Error("Failed to delete environment variable");r(e=>e.filter(e=>e.key!==t))}catch(e){console.error("Failed to delete environment variable:",e),alert("Failed to delete environment variable")}},O=async(t,s)=>{try{if(!(await fetch((0,l.apiUrl)("/api/env"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:t,value:s,scope:e.scope,owner:e.owner,repo:e.repo})})).ok)throw Error("Failed to update environment variable");r(e=>e.map(e=>e.key===t?{...e,value:s}:e))}catch(e){throw console.error("Failed to update environment variable:",e),e}},F=async()=>{var t;if(y(""),!m.trim())return void y("Key is required");if(!j.trim())return void y("Value is required");if(t=m.trim(),/^[A-Z0-9_]+$/.test(t)?C.includes(t)?(y("Claude tokens should be added in the Tokens section"),!1):!a.some(e=>e.key===t)||(y(`Key "${t}" already exists in this scope`),!1):(y("Key must contain only uppercase letters, numbers, and underscores"),!1))try{if(!(await fetch((0,l.apiUrl)("/api/env"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:m.trim(),value:j.trim(),scope:e.scope,owner:e.owner,repo:e.repo})})).ok)throw Error("Failed to add environment variable");let t=new URLSearchParams({scope:e.scope});e.owner&&t.set("owner",e.owner),e.repo&&t.set("repo",e.repo);let s=await fetch((0,l.apiUrl)(`/api/env/list?${t}`));if(s.ok){let e=((await s.json()).data.envVars||[]).filter(e=>!C.includes(e.key));r(e)}u(!1),p(""),g("")}catch(e){console.error("Failed to add environment variable:",e),y("Failed to add environment variable")}};return n?(0,t.jsx)("div",{className:"h-full flex items-center justify-center",children:(0,t.jsx)(k.LoadingSpinner,{size:"md",message:"Loading variables..."})}):i?(0,t.jsx)("div",{className:"h-full flex items-center justify-center",children:(0,t.jsx)("div",{className:"text-destructive text-sm",children:i})}):(0,t.jsxs)("div",{className:"h-full flex flex-col",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsx)("h2",{className:"text-lg font-bold text-foreground",children:"Environment Variables"}),!d&&(0,t.jsxs)(x.Button,{size:"sm",onClick:()=>u(!0),className:"active:scale-95",children:[(0,t.jsx)(h.Plus,{className:"w-4 h-4"}),"Add Variable"]})]}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto space-y-3",children:[d&&(0,t.jsxs)("div",{className:"border border-border rounded p-3 bg-accent space-y-2",children:[(0,t.jsx)("div",{className:"text-sm font-medium text-foreground",children:"New Variable"}),(0,t.jsx)(N.Input,{type:"text",value:m,onChange:e=>p(e.target.value.toUpperCase()),placeholder:"VARIABLE_NAME",className:"w-full font-mono",autoFocus:!0}),(0,t.jsx)(N.Input,{type:"password",value:j,onChange:e=>g(e.target.value),placeholder:"value",className:"w-full font-mono"}),w&&(0,t.jsx)("div",{className:"text-xs text-destructive",children:w}),(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsx)(x.Button,{variant:"outline",size:"sm",onClick:()=>{u(!1),p(""),g(""),y("")},className:"active:scale-95",children:(0,t.jsx)(f.X,{className:"w-4 h-4"})}),(0,t.jsx)(x.Button,{size:"sm",onClick:F,className:"active:scale-95",children:(0,t.jsx)(v.Check,{className:"w-4 h-4"})})]})]}),0!==a.length||d?a.map(e=>(0,t.jsx)(b,{variable:e,onToggle:E,onDelete:T,onUpdate:O,isDeletable:!0},e.key)):(0,t.jsx)("div",{className:"text-center text-muted-foreground text-sm py-4",children:"No environment variables"})]})]})}var E=e.i(63209);let T=["ANTHROPIC_API_KEY","CLAUDE_CODE_OAUTH_TOKEN"],O={ANTHROPIC_API_KEY:"API Key",CLAUDE_CODE_OAUTH_TOKEN:"OAuth Token"};function F(e){return e.startsWith("sk-ant-api")?"ANTHROPIC_API_KEY":e.startsWith("sk-ant-oat")?"CLAUDE_CODE_OAUTH_TOKEN":null}function _({selectedNode:e,onboardingStatus:a,onSwitchToGlobal:r}){let[n,o]=(0,s.useState)([]),[i,c]=(0,s.useState)(!0),[d,u]=(0,s.useState)(null),[m,p]=(0,s.useState)(null),[b,C]=(0,s.useState)(""),[S,P]=(0,s.useState)(""),[B,U]=(0,s.useState)(null),[A,z]=(0,s.useState)({}),[D,L]=(0,s.useState)(!1),[I,$]=(0,s.useState)(""),[R,H]=(0,s.useState)(""),[M,K]=(0,s.useState)(null);(0,s.useEffect)(()=>{G()},[e]);let G=async()=>{c(!0),u(null);try{let t=new URLSearchParams({scope:e.scope});e.owner&&t.set("owner",e.owner),e.repo&&t.set("repo",e.repo);let s=await fetch((0,l.apiUrl)(`/api/env/list?${t}`));if(!s.ok)throw Error("Failed to fetch tokens");let a=((await s.json()).data.envVars||[]).filter(e=>T.includes(e.key)).map(e=>({key:e.key,value:e.value,label:O[e.key]||e.key}));o(a)}catch(e){console.error("Failed to load tokens:",e),u("Failed to load tokens")}finally{c(!1)}},W=()=>{p(null),C(""),P(""),U(null)},J=async t=>{if(!b.trim())return void P("Token value is required");let s=F(b);if(!s)return void P("Invalid token format");try{if(s!==t){let a=new URLSearchParams({key:t,scope:e.scope});e.owner&&a.set("owner",e.owner),e.repo&&a.set("repo",e.repo),await fetch((0,l.apiUrl)(`/api/env?${a}`),{method:"DELETE"}),await fetch((0,l.apiUrl)("/api/env"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:s,value:b.trim(),scope:e.scope,owner:e.owner,repo:e.repo})})}else if(!(await fetch((0,l.apiUrl)("/api/env"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:t,value:b.trim(),scope:e.scope,owner:e.owner,repo:e.repo})})).ok)throw Error("Failed to update token");await G(),p(null),C(""),P(""),U(null)}catch(e){console.error("Failed to update token:",e),P("Failed to update token")}},V=async()=>{if(!I.trim())return void H("Token value is required");let t=F(I);if(!t)return void H("Invalid token format");if(n.length>0)return void H("Only one Claude token is allowed per scope. Please edit the existing token.");try{if(!(await fetch((0,l.apiUrl)("/api/env"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:t,value:I.trim(),scope:e.scope,owner:e.owner,repo:e.repo})})).ok)throw Error("Failed to add token");await G(),L(!1),$(""),K(null)}catch(e){console.error("Failed to add token:",e),H("Failed to add token")}},Y=async t=>{if(confirm("Are you sure you want to delete this token?"))try{let s=new URLSearchParams({key:t,scope:e.scope});if(e.owner&&s.set("owner",e.owner),e.repo&&s.set("repo",e.repo),!(await fetch((0,l.apiUrl)(`/api/env?${s}`),{method:"DELETE"})).ok)throw Error("Failed to delete token");await G()}catch(e){console.error("Failed to delete token:",e),alert("Failed to delete token")}};if(i)return(0,t.jsxs)("div",{className:"border-2 border-primary rounded-xl p-4 bg-card",children:[(0,t.jsx)("h2",{className:"text-lg font-bold text-foreground mb-4",children:"Claude Tokens"}),(0,t.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,t.jsx)(k.LoadingSpinner,{size:"sm",message:"Loading tokens..."})})]});if(d)return(0,t.jsxs)("div",{className:"border-2 border-primary rounded-xl p-4 bg-card",children:[(0,t.jsx)("h2",{className:"text-lg font-bold text-foreground mb-4",children:"Claude Tokens"}),(0,t.jsx)("div",{className:"text-destructive text-sm",children:d})]});let q=a&&!a.completed&&"global"!==e.scope;return(0,t.jsxs)("div",{className:"border-2 border-primary rounded-xl p-4 bg-card",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsx)("h2",{className:"text-lg font-bold text-foreground",children:"Claude Tokens"}),!D&&0===n.length&&(0,t.jsxs)(x.Button,{size:"sm",onClick:()=>L(!0),className:"active:scale-95",children:[(0,t.jsx)(h.Plus,{className:"w-4 h-4"}),"Add Token"]})]}),q&&(0,t.jsxs)("div",{className:"mb-4 border-2 border-warning bg-warning/10 rounded-xl p-3 flex items-start gap-3",children:[(0,t.jsx)(E.AlertCircle,{className:"w-5 h-5 text-warning flex-shrink-0 mt-0.5"}),(0,t.jsx)("div",{className:"flex-1",children:(0,t.jsx)("p",{className:"text-sm text-warning",children:"オンボーディングを完了するには、Globalスコープにトークンを追加してください"})}),r&&(0,t.jsx)(x.Button,{size:"sm",onClick:r,className:"bg-warning text-white hover:bg-warning/80 active:scale-95 whitespace-nowrap",children:"Switch to Global"})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[D&&(0,t.jsxs)("div",{className:"border border-border rounded p-3 bg-accent",children:[(0,t.jsx)("div",{className:"text-sm font-medium text-foreground mb-2",children:"New Token"}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(N.Input,{type:"password",value:I,onChange:e=>{var t;let s;return $(t=e.target.value),H(""),void(K(s=F(t)),t&&!s&&H("Invalid token format. Must start with sk-ant-api or sk-ant-oat"))},placeholder:"sk-ant-api... or sk-ant-oat...",className:"w-full font-mono",autoFocus:!0}),M&&!R&&(0,t.jsxs)("div",{className:"text-xs text-success",children:["→ Detected: ",O[M]]}),R&&(0,t.jsx)("div",{className:"text-xs text-destructive",children:R}),(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsx)(x.Button,{variant:"outline",size:"sm",onClick:()=>{L(!1),$(""),H(""),K(null)},className:"active:scale-95",children:(0,t.jsx)(f.X,{className:"w-4 h-4"})}),(0,t.jsx)(x.Button,{size:"sm",onClick:V,disabled:!M||!!R,className:"active:scale-95",children:(0,t.jsx)(v.Check,{className:"w-4 h-4"})})]})]})]}),0!==n.length||D?n.map(s=>(0,t.jsx)("div",{className:"border border-border rounded p-3 space-y-2",children:m===s.key?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"text-sm font-medium text-foreground mb-2",children:"Edit Token"}),(0,t.jsx)(N.Input,{type:"password",value:b,onChange:e=>{var t;let s;return C(t=e.target.value),P(""),void(U(s=F(t)),t&&!s&&P("Invalid token format. Must start with sk-ant-api or sk-ant-oat"))},placeholder:"sk-ant-api... or sk-ant-oat...",className:"w-full font-mono",autoFocus:!0}),B&&!S&&(0,t.jsxs)("div",{className:"text-xs text-success",children:["→ Detected: ",O[B]]}),S&&(0,t.jsx)("div",{className:"text-xs text-destructive",children:S}),(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsx)(x.Button,{variant:"outline",size:"sm",onClick:W,className:"active:scale-95",children:(0,t.jsx)(f.X,{className:"w-4 h-4"})}),(0,t.jsx)(x.Button,{size:"sm",onClick:()=>J(s.key),disabled:!B||!!S,className:"active:scale-95",children:(0,t.jsx)(v.Check,{className:"w-4 h-4"})})]})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:s.label}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(x.Button,{variant:"ghost",size:"icon-lg",onClick:()=>z(e=>({...e,[s.key]:!e[s.key]})),title:A[s.key]?"Hide value":"Show value",children:A[s.key]?(0,t.jsx)(g,{className:"w-4 h-4 text-muted-foreground"}):(0,t.jsx)(j.Eye,{className:"w-4 h-4 text-muted-foreground"})}),(0,t.jsx)(x.Button,{variant:"ghost",size:"icon-lg",onClick:()=>{p(s.key),C(""),P(""),U(null)},title:"Edit",children:(0,t.jsx)(y.Pencil,{className:"w-4 h-4 text-muted-foreground"})}),"global"!==e.scope&&(0,t.jsx)(x.Button,{variant:"ghost",size:"icon-lg",onClick:()=>Y(s.key),className:"hover:bg-destructive/10",title:"Delete",children:(0,t.jsx)(w.Trash2,{className:"w-4 h-4 text-destructive"})})]})]}),(0,t.jsx)(N.Input,{type:A[s.key]?"text":"password",value:s.value,readOnly:!0,className:"w-full font-mono"})]})},s.key)):(0,t.jsx)("div",{className:"text-center text-muted-foreground text-sm py-4",children:"No Claude tokens configured"})]})]})}var P=e.i(5352),B=e.i(68995);function U(){let[e,a]=(0,s.useState)([]),[r,n]=(0,s.useState)({}),[o,i]=(0,s.useState)(null),[c,d]=(0,s.useState)(!1),u=(0,s.useCallback)(async()=>{try{let[e,t]=await Promise.all([fetch((0,l.apiUrl)("/api/repos")).then(e=>e.json()),fetch((0,l.apiUrl)("/api/tasks")).then(e=>e.json())]);a(e.data?.repos??[]);let s={};for(let e of t.data?.tasks??[]){let t=`${e.owner}/${e.repo}`;s[t]=(s[t]??0)+1}n(s)}catch(e){console.error("Failed to load repositories:",e)}},[]);(0,s.useEffect)(()=>{u()},[u]);let m=async()=>{if(o){d(!0);try{if(!(await fetch((0,l.apiUrl)(`/api/repos/${o.owner}/${o.repo}`),{method:"DELETE"})).ok)throw Error("Failed to delete repository");await u()}catch(e){console.error("Failed to delete repository:",e)}finally{d(!1),i(null)}}};return 0===e.length?(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"No repositories cloned yet."}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(B.ConfirmDialog,{open:null!==o,onOpenChange:e=>{e.open||i(null)},title:"Delete Repository",message:o?`Delete ${o.owner}/${o.repo}? This will also delete ${r[`${o.owner}/${o.repo}`]??0} associated task(s), all worktrees, and the bare repository. This action cannot be undone.`:"",confirmLabel:c?"Deleting...":"Delete",cancelLabel:"Cancel",onConfirm:m,variant:"danger"}),(0,t.jsx)("div",{className:"space-y-2",children:e.map(e=>{let s=`${e.owner}/${e.repo}`,a=(0,P.getRepoColor)(e.owner,e.repo),l=r[s]??0;return(0,t.jsxs)("div",{className:"flex items-center justify-between rounded-md border border-border p-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:`inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ${a.bg} ${a.text}`,children:s}),(0,t.jsxs)("span",{className:"text-xs text-muted-foreground",children:[l," task",1!==l?"s":""]})]}),(0,t.jsx)(x.Button,{variant:"ghost",size:"icon",onClick:()=>i(e),className:"text-muted-foreground hover:text-destructive",children:(0,t.jsx)(w.Trash2,{className:"size-4"})})]},e.id)})})]})}var A=e.i(69068);function z({owner:e,repo:a,onDeleted:r}){let[n,o]=(0,s.useState)(!1),[i,c]=(0,s.useState)(""),[d,u]=(0,s.useState)(!1),m=`${e}/${a}`,p=i===m,h=async()=>{if(p){u(!0);try{if(!(await fetch((0,l.apiUrl)(`/api/repos/${e}/${a}`),{method:"DELETE"})).ok)throw Error("Failed to delete repository");r()}catch(e){console.error("Failed to delete repository:",e)}finally{u(!1),o(!1),c("")}}};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"rounded-md border border-destructive/30 p-4 space-y-3",children:[(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold text-destructive",children:"Remove Repository"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Remove this repository and all associated data including tasks, worktrees, and environment variables. This action cannot be undone."})]}),(0,t.jsxs)(x.Button,{variant:"destructive",size:"sm",onClick:()=>o(!0),children:[(0,t.jsx)(w.Trash2,{className:"size-4"}),"Remove Repository"]})]}),(0,t.jsx)(A.Dialog,{open:n,onOpenChange:o,children:(0,t.jsxs)(A.DialogContent,{showCloseButton:!1,children:[(0,t.jsxs)(A.DialogHeader,{children:[(0,t.jsx)(A.DialogTitle,{children:"Remove Repository"}),(0,t.jsxs)(A.DialogDescription,{children:["This will permanently delete ",(0,t.jsx)("strong",{children:m})," and all associated tasks, worktrees, and environment variables."]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("label",{className:"text-xs text-muted-foreground",children:["Type ",(0,t.jsx)("strong",{children:m})," to confirm"]}),(0,t.jsx)(N.Input,{value:i,onChange:e=>c(e.target.value),placeholder:m,autoComplete:"off"})]}),(0,t.jsxs)(A.DialogFooter,{children:[(0,t.jsx)(x.Button,{variant:"outline",size:"sm",onClick:()=>{o(!1),c("")},disabled:d,children:"Cancel"}),(0,t.jsx)(x.Button,{variant:"destructive",size:"sm",onClick:h,disabled:!p||d,children:d?"Removing...":"Remove"})]})]})})]})}var D=e.i(95468),L=e.i(58e3),I=e.i(31278),$=e.i(87951),R=e.i(52044),H=e.i(64036),M=e.i(77814),K=e.i(41247),G=e.i(57024),W=e.i(31449);let J="tsunagi:voice-input-enabled",V={not_running:"停止中",installing_deps:"依存関係をインストール中...",downloading_model:"モデルをダウンロード中...",starting_server:"サーバーを起動中...",running:"実行中",running_external:"実行中 (tsunagi外で起動)",error:"エラー"},Y=["installing_deps","downloading_model","starting_server"],q=["running","running_external"];function X(e){let t=e/0x40000000;return t>=.1?`${t.toFixed(2)} GB`:`${(e/1048576).toFixed(0)} MB`}function Z(){let[e,a]=(0,s.useState)(!1),[r,n]=(0,s.useState)(!1),[o,i]=(0,s.useState)(null),[c,d]=(0,s.useState)(""),u=(0,s.useRef)(null),m=(0,s.useCallback)(e=>{a(e),localStorage.setItem(J,String(e))},[]),p=(0,s.useCallback)(e=>{d(e),localStorage.setItem(W.WHISPER_PROMPT_STORAGE_KEY,e)},[]),h=(0,s.useCallback)(async()=>{let e=await fetch((0,l.apiUrl)("/api/whisper/server/status")),t=await e.json();return i(t),t},[]);(0,s.useEffect)(()=>{a("true"===localStorage.getItem(J)),d(localStorage.getItem(W.WHISPER_PROMPT_STORAGE_KEY)??""),h()},[h]),(0,s.useEffect)(()=>{o&&q.includes(o.step)&&!e&&(m(!0),G.toaster.create({type:"success",title:"音声入力が有効化されました"}))},[o,e,m]),(0,s.useEffect)(()=>(o&&Y.includes(o.step)&&!u.current&&(u.current=setInterval(()=>{h().then(e=>{!Y.includes(e.step)&&u.current&&(clearInterval(u.current),u.current=null)})},1e3)),()=>{u.current&&(clearInterval(u.current),u.current=null)}),[o,h]);let f=(0,s.useCallback)(()=>{h(),n(!0)},[h]),v=(0,s.useCallback)(async()=>{try{let e=await fetch((0,l.apiUrl)("/api/whisper/server/start"),{method:"POST"});if(!e.ok){let t=await e.json().catch(()=>null);throw Error(t?.error||`HTTPエラー: ${e.status}`)}i(await e.json())}catch(e){G.toaster.create({type:"error",title:"サーバーの起動に失敗しました",description:e instanceof Error?e.message:String(e)})}},[]),j=(0,s.useCallback)(async()=>{try{let e=await fetch((0,l.apiUrl)("/api/whisper/server/stop"),{method:"POST"});if(!e.ok){let t=await e.json().catch(()=>null);throw Error(t?.error||`HTTPエラー: ${e.status}`)}i(await e.json())}catch(e){G.toaster.create({type:"error",title:"サーバーの停止に失敗しました",description:e instanceof Error?e.message:String(e)})}},[]),g=(0,s.useCallback)(()=>{m(!1),o&&q.includes(o.step)&&j()},[m,j,o]),w=o?.serverDir,y=o?.downloadProgress,N=y?y.downloadedBytes/y.totalBytes*100:0,b=null!==o,k=b&&q.includes(o.step);return(0,t.jsxs)(H.Card,{children:[(0,t.jsxs)(H.CardHeader,{children:[(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)(H.CardTitle,{children:"音声入力 (実験的機能)"}),(0,t.jsx)(x.Button,{variant:"ghost",size:"icon-sm",onClick:f,title:"音声入力について",children:(0,t.jsx)(L.CircleHelp,{})})]}),(0,t.jsx)(H.CardDescription,{children:"ローカルで動作するWhisperを使って音声入力を行います。下記のローカルLLMも有効にすると、 文字起こし結果がLLMで自動整形されます(無効時は文字起こし結果をそのまま使用)。"})]}),(0,t.jsx)(H.CardContent,{className:"flex flex-col gap-3",children:e?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[b?k?(0,t.jsxs)("span",{className:"flex items-center gap-2 text-success",children:[(0,t.jsx)(D.CheckCircle2,{className:"size-4"}),"音声入力: 有効"]}):(0,t.jsxs)("span",{className:"flex items-center gap-2 text-warning",children:[(0,t.jsx)(E.AlertCircle,{className:"size-4"}),"音声入力: 有効化済み(サーバー停止中)"]}):(0,t.jsxs)("span",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,t.jsx)(I.Loader2,{className:"size-4 animate-spin"}),"状態を確認中..."]}),o&&(0,t.jsxs)("span",{className:"text-xs/relaxed text-muted-foreground",children:["(",V[o.step],")"]}),b&&!k&&(0,t.jsxs)(x.Button,{size:"default",onClick:f,children:[(0,t.jsx)($.Mic,{}),"サーバーを起動"]}),(0,t.jsx)(x.Button,{size:"default",variant:"outline",onClick:g,children:"無効にする"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"文字起こしプロンプト (任意)"}),(0,t.jsx)(K.Textarea,{value:c,onChange:e=>p(e.target.value),placeholder:"例: 誤字、句読点、音声入力、Whisper、固有名詞や専門用語など",className:"min-h-16 text-xs"}),(0,t.jsx)("p",{className:"mt-1 text-[0.65rem] text-muted-foreground",children:"よく使う単語(固有名詞・専門用語・同音異義語で誤変換されやすい単語など)を列挙すると、 Whisperがその表記を優先しやすくなり誤変換が減ります。文章でなく単語の羅列でも構いません。空でも可。"})]})]}):(0,t.jsxs)(x.Button,{size:"default",onClick:f,children:[(0,t.jsx)($.Mic,{}),"音声入力を有効化する"]})}),(0,t.jsx)(B.Dialog,{open:r,onOpenChange:({open:e})=>n(e),title:"音声入力について",maxWidth:"2xl",children:(0,t.jsxs)("div",{className:"space-y-4 text-sm",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"実験的機能です"}),(0,t.jsx)("p",{className:"text-muted-foreground",children:"音声入力はローカルで動作するWhisper (mlx-whisper) を利用します。精度・速度は環境に依存し、今後変更される可能性があります。"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"対応環境"}),(0,t.jsx)("p",{className:"text-muted-foreground",children:"Apple Silicon Mac (M1/M2/M3/M4) のみ対応。Windows/Linuxでは利用できません。"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"必要なもの(事前に手動でインストール)"}),(0,t.jsx)("ul",{className:"list-disc pl-5 text-muted-foreground",children:(0,t.jsx)("li",{children:"Python 3.9以降(Xcode Command Line Tools または Homebrew経由で入手可能)"})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-1 font-medium text-foreground",children:"セットアップ・起動"}),(0,t.jsx)("p",{className:"text-muted-foreground",children:"下のボタンから、依存関係のインストール・モデルのダウンロード・サーバー起動まで自動で行われます(初回は数分かかります)。"}),o&&!w&&(0,t.jsx)("p",{className:"mt-1 text-destructive",children:"whisper-serverが見つかりませんでした。インストールが壊れている可能性があります。"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-1 font-medium text-foreground",children:"アンインストール"}),(0,t.jsxs)("p",{className:"text-muted-foreground",children:["音声入力のためにダウンロードされるもの(Pythonの依存関係・Whisperモデル、合計約2.6GB)は全て",(0,t.jsx)("code",{className:"rounded bg-muted px-1",children:"~/.tsunagi/whisper"}),"に保存されます。不要になった場合はこのディレクトリを削除するだけで、関連リソースを完全に削除できます。"]})]}),(0,t.jsxs)("div",{className:"border-t border-border pt-4",children:[(!o||"not_running"===o.step||"error"===o.step)&&(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)(x.Button,{size:"default",onClick:()=>void v(),disabled:!o,children:[o?(0,t.jsx)($.Mic,{}):(0,t.jsx)(I.Loader2,{className:"animate-spin"}),"Whisperサーバーを起動"]}),o?.step==="error"&&o.error&&(0,t.jsx)("p",{className:"text-xs/relaxed text-destructive",children:o.error})]}),o?.step==="installing_deps"&&(0,t.jsxs)(x.Button,{size:"default",disabled:!0,children:[(0,t.jsx)(I.Loader2,{className:"animate-spin"}),"依存関係をインストール中... (数分かかる場合があります)"]}),o?.step==="downloading_model"&&(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs/relaxed text-muted-foreground",children:[(0,t.jsx)(I.Loader2,{className:"size-4 animate-spin"}),"モデルをダウンロード中..."]}),y&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(M.Progress,{value:N}),(0,t.jsxs)("p",{className:"text-xs/relaxed text-muted-foreground",children:[X(y.downloadedBytes)," / ",X(y.totalBytes)," (",N.toFixed(0),"%) ・ ",function(e){if(null===e)return"残り時間を計算中...";if(e<60)return`残り約${e}秒`;let t=Math.floor(e/60);return`残り約${t}分${e%60}秒`}(y.etaSeconds)]})]})]}),o?.step==="starting_server"&&(0,t.jsxs)(x.Button,{size:"default",disabled:!0,children:[(0,t.jsx)(I.Loader2,{className:"animate-spin"}),"サーバーを起動中..."]}),o&&q.includes(o.step)&&(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsxs)("span",{className:"flex items-center gap-2 text-success",children:[(0,t.jsx)(D.CheckCircle2,{className:"size-4"}),"サーバーは起動しています"]}),(0,t.jsxs)(x.Button,{size:"default",variant:"outline",onClick:()=>void j(),children:[(0,t.jsx)(R.Square,{}),"サーバーを停止"]})]})]})]})})]})}var Q=e.i(66961),ee=e.i(51846);e.s(["default",0,function(){let e=(0,a.useRouter)();(0,ee.useDocumentTitle)("settings");let n=()=>{{let e=localStorage.getItem("tsunagi:env-selected-node");if(e)try{return JSON.parse(e)}catch(e){console.error("Failed to parse selected node:",e)}}return{scope:"global",label:"Global"}},[o,i]=(0,s.useState)(null),[c,d]=(0,s.useState)(0),[u,m]=(0,s.useState)({completed:!0,hasGlobalToken:!0});return(0,s.useEffect)(()=>{fetch((0,l.apiUrl)("/api/onboarding/status")).then(e=>e.json()).then(e=>{let t=e.data;m(t),t.completed||t.hasGlobalToken?i(n()):i({scope:"global",label:"Global"})}).catch(e=>{console.error("Failed to fetch onboarding status:",e),i(n())})},[]),(0,s.useEffect)(()=>{o&&localStorage.setItem("tsunagi:env-selected-node",JSON.stringify(o))},[o]),(0,t.jsxs)("div",{className:"h-screen flex flex-col bg-background",children:[(0,t.jsx)("div",{className:"sticky top-0 z-50 p-4 border-b border-border bg-card",children:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)(x.Button,{variant:"ghost",onClick:()=>e.push("/"),className:"text-primary font-medium hover:bg-primary/10 hover:text-foreground",children:[(0,t.jsx)(r.ArrowLeft,{className:"w-4 h-4"}),"Back to Board"]}),(0,t.jsx)("h1",{className:"text-xl font-bold text-foreground absolute left-1/2 -translate-x-1/2",children:"Settings"})]})}),(0,t.jsxs)("div",{className:"flex-1 flex min-h-0",children:[(0,t.jsx)("div",{className:"w-64 border-r border-border bg-card",children:(0,t.jsx)(p,{selectedNode:o,onNodeSelect:e=>{i(e)},refreshKey:c})}),(0,t.jsx)("div",{className:"flex-1 bg-card p-4 overflow-y-auto",children:o?(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)(_,{selectedNode:o,onboardingStatus:u,onSwitchToGlobal:()=>{i({scope:"global",label:"Global"})}}),(0,t.jsx)(S,{selectedNode:o}),"global"===o.scope&&(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("h2",{className:"text-sm font-semibold text-foreground",children:"Repositories"}),(0,t.jsx)(U,{})]}),"global"===o.scope&&(0,t.jsx)(Z,{}),"global"===o.scope&&(0,t.jsx)(Q.LocalLlmSection,{}),"repo"===o.scope&&o.owner&&o.repo&&(0,t.jsx)(z,{owner:o.owner,repo:o.repo,onDeleted:()=>{i({scope:"global",label:"Global"}),d(e=>e+1)}})]}):(0,t.jsx)("div",{className:"h-full flex items-center justify-center text-muted-foreground text-sm",children:"Select a node from the left panel"})})]})]})}],82341)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18566,(e,t,r)=>{t.exports=e.r(76562)},27612,e=>{"use strict";let t=(0,e.i(75254).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["Trash2",0,t],27612)},43531,78745,e=>{"use strict";let t=(0,e.i(75254).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["default",0,t],78745),e.s(["Check",0,t],43531)},37870,31278,e=>{"use strict";var t=e.i(18050),r=e.i(17521);e.s(["Loader2",()=>r.default],31278);var r=r;e.s(["LoadingSpinner",0,function({size:e="md",message:a}){return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center gap-3",children:[(0,t.jsx)(r.default,{className:`${{sm:"w-4 h-4",md:"w-8 h-8",lg:"w-12 h-12"}[e]} text-primary animate-spin`}),a&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:a})]})}],37870)},10012,24564,94349,e=>{"use strict";var t,r=e.i(18050);e.i(47167);var a=e.i(71645);e.s([],19485),e.i(19485);var i=e.i(76477),n=e.i(67805),s=e.i(17514);let l=((t={}).disabled="data-disabled",t.valid="data-valid",t.invalid="data-invalid",t.touched="data-touched",t.dirty="data-dirty",t.filled="data-filled",t.focused="data-focused",t),o={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},d={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},u={disabled:!1,...d},c={valid:e=>null===e?null:e?{[l.valid]:""}:{[l.invalid]:""}},f=a.createContext({invalid:void 0,name:void 0,validityData:{state:o,errors:[],error:"",value:"",initialValue:null},setValidityData:s.NOOP,disabled:void 0,touched:d.touched,setTouched:s.NOOP,dirty:d.dirty,setDirty:s.NOOP,filled:d.filled,setFilled:s.NOOP,focused:d.focused,setFocused:s.NOOP,validate:()=>null,validationMode:"onSubmit",validationDebounceTime:0,shouldValidateOnChange:()=>!1,state:u,markedDirtyRef:{current:!1},validation:{getValidationProps:(e=s.EMPTY_OBJECT)=>e,getInputValidationProps:(e=s.EMPTY_OBJECT)=>e,inputRef:{current:null},commit:async()=>{}}});function m(e=!0){let t=a.useContext(f);if(t.setValidityData===s.NOOP&&!e)throw Error((0,n.default)(28));return t}let p=a.createContext({legendId:void 0,setLegendId:()=>{},disabled:void 0}),v=a.createContext({formRef:{current:{fields:new Map}},errors:{},clearErrors:s.NOOP,validationMode:"onSubmit",submitAttemptedRef:{current:!1}});function g(){return a.useContext(v)}var x=e.i(30628),h=e.i(19805),b=e.i(89879);let y=a.createContext({controlId:void 0,registerControlId:s.NOOP,labelId:void 0,setLabelId:s.NOOP,messageIds:[],setMessageIds:s.NOOP,getDescriptionProps:e=>e});function j(){return a.useContext(y)}let M=function(e){let t=(0,b.useBaseUiId)(),n=void 0===e.controlId?t:e.controlId,[s,l]=a.useState(n),[o,d]=a.useState(e.labelId),[u,c]=a.useState([]),f=(0,x.useRefWithInit)(()=>new Map),{messageIds:m}=j(),p=(0,i.useStableCallback)((e,t)=>{let r=f.current;void 0===t?r.delete(e):(r.set(e,t),l(e=>{let t;if(0!==r.size){for(let a of r.values()){if(void 0!==e&&a===e)return e;void 0===t&&(t=a)}return t}}))}),v=a.useCallback(e=>(0,h.mergeProps)({"aria-describedby":m.concat(u).join(" ")||void 0},e),[m,u]),g=a.useMemo(()=>({controlId:s,registerControlId:p,labelId:o,setLabelId:d,messageIds:u,setMessageIds:c,getDescriptionProps:v}),[s,p,o,d,u,c,v]);return(0,r.jsx)(y.Provider,{value:g,children:e.children})};var w=e.i(27601),C=e.i(66745);function k(e,t){return{...e,state:{...e.state,valid:!t&&e.state.valid}}}let N=Object.keys(o),S=a.forwardRef(function(e,t){let{errors:l,validationMode:d,submitAttemptedRef:u}=g(),{render:m,className:v,validate:x,validationDebounceTime:b=0,validationMode:y=d,name:M,disabled:S=!1,invalid:E,dirty:L,touched:R,actionsRef:I,...T}=e,{disabled:P}=function(e=!1){let t=a.useContext(p);if(!t&&!e)throw Error((0,n.default)(86));return t}(),O=(0,i.useStableCallback)(x||(()=>null)),B=P||S,[A,V]=a.useState(!1),[_,z]=a.useState(!1),[D,F]=a.useState(!1),[U,H]=a.useState(!1),$=L??_,q=R??A,G=a.useRef(!1),Y=(0,i.useStableCallback)(e=>{void 0===L&&(e&&(G.current=!0),z(e))}),J=(0,i.useStableCallback)(e=>{void 0===R&&V(e)}),K=(0,i.useStableCallback)(()=>"onChange"===y||"onSubmit"===y&&u.current),W=!!M&&Object.hasOwn(l,M)&&void 0!==l[M],Q=!0===E||W,[X,Z]=a.useState({state:o,error:"",errors:[],value:null,initialValue:null}),ee=!Q&&X.state.valid,et=a.useMemo(()=>({disabled:B,touched:q,dirty:$,valid:ee,filled:D,focused:U}),[B,q,$,ee,D,U]),er=function(e){let{formRef:t,clearErrors:r}=g(),{setValidityData:n,validate:l,validityData:d,validationDebounceTime:u,invalid:c,markedDirtyRef:f,state:m,name:p,shouldValidateOnChange:v}=e,{controlId:x,getDescriptionProps:b}=j(),y=(0,C.useTimeout)(),M=a.useRef(null),w=(0,i.useStableCallback)(async(e,r=!1)=>{let a,i=M.current;if(!i)return;if(r){if(!1!==m.valid)return;let r=i.validity;if(!r.valueMissing){let r={value:e,state:{...o,valid:!0},error:"",errors:[],initialValue:d.initialValue};if(i.setCustomValidity(""),x){let e=t.current.fields.get(x);e&&t.current.fields.set(x,{...e,...k(r,!1)})}n(r);return}let a=N.reduce((e,t)=>(e[t]=r[t],e),{});if(!a.valid&&!function(e){if(!e||e.valid||!e.valueMissing)return!1;let t=!1;for(let r of N)"valid"!==r&&("valueMissing"===r&&(t=e[r]),e[r]&&(t=!1));return t}(a))return}y.clear();let s=null,u=[],p=function(e){let t=N.reduce((t,r)=>(t[r]=e.validity[r],t),{}),r=!1;for(let e of N)if("valid"!==e){if("valueMissing"===e&&t[e])r=!0;else if(t[e])return t}return r&&!f.current&&(t.valid=!0,t.valueMissing=!1),t}(i),g=v();if(i.validationMessage&&!g)a=i.validationMessage,u=[i.validationMessage];else{let r=l(e,Array.from(t.current.fields.values()).reduce((e,t)=>(t.name&&(e[t.name]=t.getValue()),e),{}));null!==(s="object"==typeof r&&null!==r&&"then"in r?await r:r)?(p.valid=!1,p.customError=!0,Array.isArray(s)?(u=s,i.setCustomValidity(s.join("\n"))):s&&(u=[s],i.setCustomValidity(s))):g&&(i.setCustomValidity(""),p.customError=!1,i.validationMessage?(a=i.validationMessage,u=[i.validationMessage]):i.validity.valid&&!p.valid&&(p.valid=!0))}let h={value:e,state:p,error:a??(Array.isArray(s)?s[0]:s??""),errors:u,initialValue:d.initialValue};if(x){let e=t.current.fields.get(x);e&&t.current.fields.set(x,{...e,...k(h,c)})}n(h)}),S=a.useCallback((e={})=>(0,h.mergeProps)(b,!1===m.valid?{"aria-invalid":!0}:s.EMPTY_OBJECT,e),[b,m.valid]),E=a.useCallback((e={})=>(0,h.mergeProps)({onChange(e){if(e.nativeEvent.defaultPrevented)return;if(r(p),!v())return void w(e.currentTarget.value,!0);let t=e.currentTarget;""===t.value?w(t.value):(y.clear(),u?y.start(u,()=>{w(t.value)}):w(t.value))}},S(e)),[S,r,p,y,w,u,v]);return a.useMemo(()=>({getValidationProps:S,getInputValidationProps:E,inputRef:M,commit:w}),[S,E,w])}({setValidityData:Z,validate:O,validityData:X,validationDebounceTime:b,invalid:Q,markedDirtyRef:G,state:et,name:M,shouldValidateOnChange:K}),ea=a.useCallback(()=>{G.current=!0,er.commit(X.value)},[er,X]);a.useImperativeHandle(I,()=>({validate:ea}),[ea]);let ei=a.useMemo(()=>({invalid:Q,name:M,validityData:X,setValidityData:Z,disabled:B,touched:q,setTouched:J,dirty:$,setDirty:Y,filled:D,setFilled:F,focused:U,setFocused:H,validate:O,validationMode:y,validationDebounceTime:b,shouldValidateOnChange:K,state:et,markedDirtyRef:G,validation:er}),[Q,M,X,B,q,J,$,Y,D,F,U,H,O,y,b,K,et,er]),en=(0,w.useRenderElement)("div",e,{ref:t,state:et,props:T,stateAttributesMapping:c});return(0,r.jsx)(f.Provider,{value:ei,children:en})}),E=a.forwardRef(function(e,t){return(0,r.jsx)(M,{children:(0,r.jsx)(S,{...e,ref:t})})});var L=e.i(29315),R=e.i(90219),I=e.i(47857),T=e.i(977);function P(e,t){let r=(0,b.useBaseUiId)(e);return(0,T.useIsoLayoutEffect)(()=>(t(r),()=>{t(void 0)}),[r,t]),r}e.s(["useRegisteredLabelId",0,P],24564);let O=a.forwardRef(function(e,t){let{render:r,className:n,id:s,nativeLabel:l=!0,...o}=e,d=m(!1),{labelId:u}=j(),f=a.useRef(null),p=function(e={}){let{id:t,fallbackControlId:r,native:a=!1,setLabelId:n,focusControl:s}=e,{controlId:l,setLabelId:o}=j(),d=P(t,(0,i.useStableCallback)(e=>{o(e),n?.(e)})),u=l??r;function c(e){let t=(0,I.getTarget)(e.nativeEvent);t?.closest("button,input,select,textarea")||(!e.defaultPrevented&&e.detail>1&&e.preventDefault(),a||function(e){if(s)return s(e,u);if(!u)return;let t=(0,R.ownerDocument)(e.currentTarget).getElementById(u);(0,L.isHTMLElement)(t)&&t.focus({focusVisible:!0})}(e))}return a?{id:d,htmlFor:u??void 0,onMouseDown:c}:{id:d,onClick:c,onPointerDown(e){e.preventDefault()}}}({id:u??s,native:l});return(0,w.useRenderElement)("label",e,{ref:[t,f],state:d.state,props:[p,o],stateAttributesMapping:c})});var B=e.i(89269),A=e.i(84759),V=e.i(88841);let _={...c,...A.transitionStatusMapping},z=a.forwardRef(function(e,t){let{render:i,id:n,className:s,match:l,...o}=e,d=(0,b.useBaseUiId)(n),{validityData:u,state:c,name:f}=m(!1),{setMessageIds:p}=j(),{errors:v}=g(),x=f?v[f]:null,h=!1;h=!!x||!0===l||(l?!!u.state[l]:!1===u.state.valid);let{mounted:y,transitionStatus:M,setMounted:C}=(0,V.useTransitionStatus)(h);(0,T.useIsoLayoutEffect)(()=>{if(h&&d)return p(e=>e.concat(d)),()=>{p(e=>e.filter(e=>e!==d))}},[h,d,p]);let k=a.useRef(null),[N,S]=a.useState(null),[E,L]=a.useState(null),R=x||(u.errors.length>1?(0,r.jsx)("ul",{children:u.errors.map(e=>(0,r.jsx)("li",{children:e},e))}):u.error),I=u.error;null!=x?I=Array.isArray(x)?JSON.stringify(x):x:u.errors.length>1&&(I=JSON.stringify(u.errors)),h&&I!==E&&(L(I),S(R)),(0,B.useOpenChangeComplete)({open:h,ref:k,onComplete(){h||C(!1)}});let P={...c,transitionStatus:M},O=(0,w.useRenderElement)("div",e,{ref:[t,k],state:P,props:[{id:d,children:h?R:N},o],stateAttributesMapping:_,enabled:y});return y?O:null}),D=a.forwardRef(function(e,t){let{render:r,id:a,className:i,...n}=e,s=(0,b.useBaseUiId)(a),l=m(!1),{setMessageIds:o}=j();return(0,T.useIsoLayoutEffect)(()=>{if(s)return o(e=>e.concat(s)),()=>{o(e=>e.filter(e=>e!==s))}},[s,o]),(0,w.useRenderElement)("p",e,{ref:t,state:l.state,props:[{id:s},n],stateAttributesMapping:c})});function F({controlled:e,default:t,name:r,state:i="value"}){let{current:n}=a.useRef(void 0!==e),[s,l]=a.useState(t),o=a.useCallback(e=>{n||l(e)},[]);return[n?e:s,o]}e.s(["useControlled",0,F],94349);var U=e.i(74080),H=e.i(5963),$=e.i(3404);let q=a.forwardRef(function(e,t){let{render:r,className:n,id:l,name:o,value:d,disabled:u=!1,onValueChange:f,defaultValue:p,autoFocus:v=!1,...h}=e,{state:y,name:M,disabled:C,setTouched:N,setDirty:S,validityData:E,setFocused:P,setFilled:O,validationMode:B,validation:A}=m(),V=C||u,_=M??o,z={...y,disabled:V},{labelId:D}=j(),q=function(e={}){let{id:t,implicit:r=!1,controlRef:n}=e,{controlId:l,registerControlId:o}=j(),d=(0,b.useBaseUiId)(t),u=r?l:void 0,c=(0,x.useRefWithInit)(()=>Symbol("labelable-control")),f=a.useRef(!1),m=a.useRef(null!=t),p=(0,i.useStableCallback)(()=>{f.current&&o!==s.NOOP&&(f.current=!1,o(c.current,void 0))});return(0,T.useIsoLayoutEffect)(()=>{let e;if(o!==s.NOOP){if(r){let r=n?.current;e=(0,L.isElement)(r)&&null!=r.closest("label")?t??null:u??d}else if(null!=t)m.current=!0,e=t;else{if(!m.current)return void p();e=d}if(void 0===e)return void p();f.current=!0,o(c.current,e)}},[t,n,u,o,r,d,c,p]),a.useEffect(()=>p,[p]),l??d}({id:l});(0,T.useIsoLayoutEffect)(()=>{let e=null!=d;A.inputRef.current?.value||e&&""!==d?O(!0):e&&""===d&&O(!1)},[A.inputRef,O,d]);let G=a.useRef(null);(0,T.useIsoLayoutEffect)(()=>{v&&G.current===(0,I.activeElement)((0,R.ownerDocument)(G.current))&&P(!0)},[v,P]);let[Y]=F({controlled:d,default:p,name:"FieldControl",state:"value"}),J=void 0!==d,K=J?Y:void 0;return!function(e){let{enabled:t=!0,value:r,id:a,name:n,controlRef:s,commit:l}=e,{formRef:o}=g(),{invalid:d,markedDirtyRef:u,validityData:c,setValidityData:f}=m(),p=(0,i.useStableCallback)(e.getValue);(0,T.useIsoLayoutEffect)(()=>{if(!t)return;let e=r;void 0===e&&(e=p()),null===c.initialValue&&null!==e&&f(t=>({...t,initialValue:e}))},[t,f,r,c.initialValue,p]),(0,T.useIsoLayoutEffect)(()=>{t&&a&&o.current.fields.set(a,{getValue:p,name:n,controlRef:s,validityData:k(c,d),validate(e=!0){let t=r;void 0===t&&(t=p()),u.current=!0,e?U.flushSync(()=>l(t)):l(t)}})},[l,s,t,o,p,a,d,u,n,c,r]),(0,T.useIsoLayoutEffect)(()=>{let e=o.current.fields;return()=>{a&&e.delete(a)}},[o,a])}({id:q,name:_,commit:A.commit,value:K,getValue:()=>A.inputRef.current?.value,controlRef:A.inputRef}),(0,w.useRenderElement)("input",e,{ref:[t,G],state:z,props:[{id:q,disabled:V,name:_,ref:A.inputRef,"aria-labelledby":D,autoFocus:v,...J?{value:K}:{defaultValue:p},onChange(e){let t=e.currentTarget.value;f?.(t,(0,H.createChangeEventDetails)($.REASONS.none,e.nativeEvent)),S(t!==E.initialValue),O(""!==t)},onFocus(){P(!0)},onBlur(e){N(!0),P(!1),"onBlur"===B&&A.commit(e.currentTarget.value)},onKeyDown(e){"INPUT"===e.currentTarget.tagName&&"Enter"===e.key&&(N(!0),A.commit(e.currentTarget.value))}},A.getInputValidationProps(),h],stateAttributesMapping:c})}),G=a.createContext({disabled:!1}),Y=a.createContext(void 0),J=a.forwardRef(function(e,t){let{render:i,className:s,disabled:l=!1,...o}=e,{state:d,disabled:u}=m(!1),f=u||l,p=function(e=!0){let t=a.useContext(Y);if(void 0===t&&!e)throw Error((0,n.default)(3));return t}(),v=p?.parent.id,g=p?.allValues!==void 0,x=a.useMemo(()=>({disabled:f}),[f]),h=(0,w.useRenderElement)("div",e,{ref:t,state:d,props:o,stateAttributesMapping:c});return(0,r.jsx)(M,{controlId:g?v:void 0,children:(0,r.jsx)(G.Provider,{value:x,children:h})})});e.s(["Control",0,q,"Description",0,D,"Error",0,z,"Item",0,J,"Label",0,O,"Root",0,E,"Validity",0,function(e){let{children:t}=e,{validityData:i,invalid:n}=m(!1),s=a.useMemo(()=>k(i,n),[i,n]),l=!1===s.state.valid,{transitionStatus:o}=(0,V.useTransitionStatus)(l),d=a.useMemo(()=>({...s,validity:s.state,transitionStatus:o}),[s,o]);return(0,r.jsx)(a.Fragment,{children:t(d)})}],71975);var K=e.i(71975),K=K;let W=a.forwardRef(function(e,t){return(0,r.jsx)(K.Control,{ref:t,...e})});var Q=e.i(52088);e.s(["Input",0,function({className:e,type:t,...a}){return(0,r.jsx)(W,{type:t,"data-slot":"input",className:(0,Q.cn)("h-9 w-full min-w-0 rounded-md border border-input bg-input/20 px-3 py-1 text-sm transition-colors outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...a})}],10012)},41247,e=>{"use strict";var t=e.i(18050),r=e.i(52088);e.s(["Textarea",0,function({className:e,...a}){return(0,t.jsx)("textarea",{"data-slot":"textarea",className:(0,r.cn)("flex field-sizing-content min-h-16 w-full resize-none rounded-md border border-input bg-input/20 px-2 py-2 text-sm transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 md:text-xs/relaxed dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...a})}])},86536,e=>{"use strict";let t=(0,e.i(75254).default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Eye",0,t],86536)},51846,e=>{"use strict";var t=e.i(71645);e.s(["useDocumentTitle",0,function(e){(0,t.useEffect)(()=>{let t=e?`繋 | ${e}`:"繋",r=document.title;return document.title=t,()=>{document.title=r}},[e])}])},31245,e=>{"use strict";let t=(0,e.i(75254).default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);e.s(["Bot",0,t],31245)},63209,e=>{"use strict";let t=(0,e.i(75254).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["AlertCircle",0,t],63209)},95468,e=>{"use strict";var t=e.i(23287);e.s(["CheckCircle2",()=>t.default])},87951,52044,e=>{"use strict";var t=e.i(75254);let r=(0,t.default)("mic",[["path",{d:"M12 19v3",key:"npa21l"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["rect",{x:"9",y:"2",width:"6",height:"13",rx:"3",key:"s6n7sd"}]]);e.s(["Mic",0,r],87951);let a=(0,t.default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);e.s(["Square",0,a],52044)},57024,e=>{"use strict";var t=e.i(85699);function r(e){let{type:r,title:a,description:i,duration:n}=e,s=e.id??crypto.randomUUID(),l={id:s,description:i,duration:n};switch(r){case"loading":t.toast.loading(a,l);break;case"success":t.toast.success(a,l);break;case"error":t.toast.error(a,l);break;case"warning":t.toast.warning(a,l);break;case"info":t.toast.info(a,l);break;default:(0,t.toast)(a,l)}return s}e.s(["toaster",0,{create:e=>r(e),update:(e,t)=>{r({...t,id:e})},dismiss:e=>{t.toast.dismiss(e)}}])},58e3,e=>{"use strict";let t=(0,e.i(75254).default)("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["CircleHelp",0,t],58e3)},64036,e=>{"use strict";var t=e.i(18050),r=e.i(52088);e.s(["Card",0,function({className:e,size:a="default",...i}){return(0,t.jsx)("div",{"data-slot":"card","data-size":a,className:(0,r.cn)("group/card flex flex-col gap-4 overflow-hidden rounded-lg bg-card py-4 text-xs/relaxed text-card-foreground ring-1 ring-foreground/10 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg",e),...i})},"CardContent",0,function({className:e,...a}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,r.cn)("px-4 group-data-[size=sm]/card:px-3",e),...a})},"CardDescription",0,function({className:e,...a}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,r.cn)("text-xs/relaxed text-muted-foreground",e),...a})},"CardHeader",0,function({className:e,...a}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,r.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-lg px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",e),...a})},"CardTitle",0,function({className:e,...a}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,r.cn)("font-heading text-sm font-medium",e),...a})}])},77814,e=>{"use strict";var t,r=e.i(18050);e.s([],33847),e.i(33847),e.i(47167);var a=e.i(71645),i=e.i(231),n=e.i(62372);let s=new Map;function l(e,t,r){return null==e?"":(function(e,t){let r=JSON.stringify({locale:e,options:t}),a=s.get(r);if(a)return a;let i=new Intl.NumberFormat(e,t);return s.set(r,i),i})(t,r).format(e)}var o=e.i(27601),d=e.i(67805);let u=a.createContext(void 0);function c(){let e=a.useContext(u);if(void 0===e)throw Error((0,d.default)(51));return e}let f=((t={}).complete="data-complete",t.indeterminate="data-indeterminate",t.progressing="data-progressing",t),m={status:e=>"progressing"===e?{[f.progressing]:""}:"complete"===e?{[f.complete]:""}:"indeterminate"===e?{[f.indeterminate]:""}:null};function p(e,t){return null==t?"indeterminate progress":e||`${t}%`}let v=a.forwardRef(function(e,t){var s;let{format:d,getAriaValueText:c=p,locale:f,max:v=100,min:g=0,value:x,render:h,className:b,children:y,...j}=e,[M,w]=a.useState(),C=(0,i.useValueAsRef)(d),k="indeterminate";Number.isFinite(x)&&(k=x===v?"complete":"progressing");let N=(s=C.current,null==x?"":s?l(x,f,s):l(x/100,f,{style:"percent"})),S=a.useMemo(()=>({status:k}),[k]),E={"aria-labelledby":M,"aria-valuemax":v,"aria-valuemin":g,"aria-valuenow":x??void 0,"aria-valuetext":c(N,x),role:"progressbar",children:(0,r.jsxs)(a.Fragment,{children:[y,(0,r.jsx)("span",{role:"presentation",style:n.visuallyHidden,children:"x"})]})},L=a.useMemo(()=>({formattedValue:N,max:v,min:g,setLabelId:w,state:S,status:k,value:x}),[N,v,g,w,S,k,x]),R=(0,o.useRenderElement)("div",e,{state:S,ref:t,props:[E,j],stateAttributesMapping:m});return(0,r.jsx)(u.Provider,{value:L,children:R})}),g=a.forwardRef(function(e,t){let{render:r,className:a,...i}=e,{state:n}=c();return(0,o.useRenderElement)("div",e,{state:n,ref:t,props:i,stateAttributesMapping:m})}),x=a.forwardRef(function(e,t){let{render:r,className:i,...n}=e,{max:s,min:l,value:d,state:u}=c(),f=Number.isFinite(d)&&null!==d?(d-l)*100/(s-l):null,p=a.useCallback(()=>null==f?{}:{insetInlineStart:0,height:"inherit",width:`${f}%`},[f]);return(0,o.useRenderElement)("div",e,{state:u,ref:t,props:[{style:p()},n],stateAttributesMapping:m})}),h=a.forwardRef(function(e,t){let{className:r,render:a,children:i,...n}=e,{value:s,formattedValue:l,state:d}=c(),u=null==s?"indeterminate":l,f=null==s?null:l;return(0,o.useRenderElement)("span",e,{state:d,ref:t,props:[{"aria-hidden":!0,children:"function"==typeof i?i(u,s):f},n],stateAttributesMapping:m})});var b=e.i(24564);let y=a.forwardRef(function(e,t){let{render:r,className:a,id:i,...n}=e,{setLabelId:s,state:l}=c(),d=(0,b.useRegisteredLabelId)(i,s);return(0,o.useRenderElement)("span",e,{state:l,ref:t,props:[{id:d,role:"presentation"},n],stateAttributesMapping:m})});e.s(["Indicator",0,x,"Label",0,y,"Root",0,v,"Track",0,g,"Value",0,h],45929);var j=e.i(45929),j=j,M=e.i(52088);function w({className:e,...t}){return(0,r.jsx)(j.Track,{className:(0,M.cn)("relative flex h-1 w-full items-center overflow-x-hidden rounded-md bg-muted",e),"data-slot":"progress-track",...t})}function C({className:e,...t}){return(0,r.jsx)(j.Indicator,{"data-slot":"progress-indicator",className:(0,M.cn)("h-full bg-primary",e),style:{transition:"width 500ms ease-in-out"},...t})}e.s(["Progress",0,function({className:e,children:t,value:a,...i}){return(0,r.jsxs)(j.Root,{value:a,"data-slot":"progress",className:(0,M.cn)("flex flex-wrap gap-3",e),...i,children:[t,(0,r.jsx)(w,{children:(0,r.jsx)(C,{})})]})}],77814)},31449,66961,e=>{"use strict";e.s(["LLM_SYSTEM_PROMPT_STORAGE_KEY",()=>k,"VoiceInputButton",()=>S,"WHISPER_PROMPT_STORAGE_KEY",()=>C],31449);var t=e.i(18050),r=e.i(71645),a=e.i(31278),i=e.i(87951),n=e.i(52044),s=e.i(85902),l=e.i(70935),o=e.i(57024);e.s(["LOCAL_LLM_ENABLED_STORAGE_KEY",()=>h,"LocalLlmSection",()=>w],66961);var d=e.i(63209),u=e.i(31245),c=e.i(95468),f=e.i(58e3),m=e.i(64036),p=e.i(68995),v=e.i(77814),g=e.i(41247);let x="tsunagi:local-llm-enabled",h=x,b={not_running:"停止中",installing_deps:"依存関係をインストール中...",downloading_model:"モデルをダウンロード中...",starting_server:"サーバーを起動中... (モデルのロードに数十秒かかる場合があります)",running:"実行中",running_external:"実行中 (tsunagi外で起動)",error:"エラー"},y=["installing_deps","downloading_model","starting_server"],j=["running","running_external"];function M(e){let t=e/0x40000000;return t>=.1?`${t.toFixed(2)} GB`:`${(e/1048576).toFixed(0)} MB`}function w(){let[e,i]=(0,r.useState)(!1),[h,w]=(0,r.useState)(!1),[C,N]=(0,r.useState)(null),[S,E]=(0,r.useState)(""),L=(0,r.useRef)(null),R=(0,r.useCallback)(e=>{i(e),localStorage.setItem(x,String(e))},[]),I=(0,r.useCallback)(e=>{E(e),localStorage.setItem(k,e)},[]),T=(0,r.useCallback)(async()=>{let e=await fetch((0,l.apiUrl)("/api/llm/server/status")),t=await e.json();return N(t),t},[]);(0,r.useEffect)(()=>{i("true"===localStorage.getItem(x)),E(localStorage.getItem(k)??""),T()},[T]),(0,r.useEffect)(()=>{C&&j.includes(C.step)&&!e&&(R(!0),o.toaster.create({type:"success",title:"ローカルLLMが有効化されました"}))},[C,e,R]),(0,r.useEffect)(()=>(C&&y.includes(C.step)&&!L.current&&(L.current=setInterval(()=>{T().then(e=>{!y.includes(e.step)&&L.current&&(clearInterval(L.current),L.current=null)})},1e3)),()=>{L.current&&(clearInterval(L.current),L.current=null)}),[C,T]);let P=(0,r.useCallback)(()=>{T(),w(!0)},[T]),O=(0,r.useCallback)(async()=>{try{let e=await fetch((0,l.apiUrl)("/api/llm/server/start"),{method:"POST"});if(!e.ok){let t=await e.json().catch(()=>null);throw Error(t?.error||`HTTPエラー: ${e.status}`)}N(await e.json())}catch(e){o.toaster.create({type:"error",title:"サーバーの起動に失敗しました",description:e instanceof Error?e.message:String(e)})}},[]),B=(0,r.useCallback)(async()=>{try{let e=await fetch((0,l.apiUrl)("/api/llm/server/stop"),{method:"POST"});if(!e.ok){let t=await e.json().catch(()=>null);throw Error(t?.error||`HTTPエラー: ${e.status}`)}N(await e.json())}catch(e){o.toaster.create({type:"error",title:"サーバーの停止に失敗しました",description:e instanceof Error?e.message:String(e)})}},[]),A=(0,r.useCallback)(()=>{R(!1),C&&j.includes(C.step)&&B()},[R,B,C]),V=C?.serverDir,_=C?.downloadProgress,z=_?_.downloadedBytes/_.totalBytes*100:0,D=null!==C,F=D&&j.includes(C.step);return(0,t.jsxs)(m.Card,{children:[(0,t.jsxs)(m.CardHeader,{children:[(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)(m.CardTitle,{children:"ローカルLLM (実験的機能)"}),(0,t.jsx)(s.Button,{variant:"ghost",size:"icon-sm",onClick:P,title:"ローカルLLMについて",children:(0,t.jsx)(f.CircleHelp,{})})]}),(0,t.jsxs)(m.CardDescription,{children:["ローカルで動作するLLM(Qwen3-30B-A3B, MoE)を利用します。",(0,t.jsx)("strong",{className:"font-medium text-foreground",children:"有効にすると、音声入力の文字起こし結果がこのLLMで自動整形されるようになります"}),"(無効時は文字起こし結果をそのまま使用)。"]})]}),(0,t.jsx)(m.CardContent,{className:"flex flex-col gap-3",children:e?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[D?F?(0,t.jsxs)("span",{className:"flex items-center gap-2 text-success",children:[(0,t.jsx)(c.CheckCircle2,{className:"size-4"}),"ローカルLLM: 有効"]}):(0,t.jsxs)("span",{className:"flex items-center gap-2 text-warning",children:[(0,t.jsx)(d.AlertCircle,{className:"size-4"}),"ローカルLLM: 有効化済み(サーバー停止中)"]}):(0,t.jsxs)("span",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,t.jsx)(a.Loader2,{className:"size-4 animate-spin"}),"状態を確認中..."]}),C&&(0,t.jsxs)("span",{className:"text-xs/relaxed text-muted-foreground",children:["(",b[C.step],")"]}),D&&!F&&(0,t.jsxs)(s.Button,{size:"default",onClick:P,children:[(0,t.jsx)(u.Bot,{}),"サーバーを起動"]}),(0,t.jsx)(s.Button,{size:"default",variant:"outline",onClick:A,children:"無効にする"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:"整形システムプロンプト (任意)"}),(0,t.jsx)(g.Textarea,{value:S,onChange:e=>I(e.target.value),placeholder:"例: 句読点の追加と誤字修正のみ行い、言い回しは変えないでください。",className:"min-h-16 text-xs"}),(0,t.jsx)("p",{className:"mt-1 text-[0.65rem] text-muted-foreground",children:"文字起こし結果をLLMで整形する際の指示です。空欄の場合は既定のプロンプト(句読点の追加・誤字修正のみを行う指示)を使用します。"})]})]}):(0,t.jsxs)(s.Button,{size:"default",onClick:P,children:[(0,t.jsx)(u.Bot,{}),"ローカルLLMを有効化する"]})}),(0,t.jsx)(p.Dialog,{open:h,onOpenChange:({open:e})=>w(e),title:"ローカルLLMについて",maxWidth:"2xl",children:(0,t.jsxs)("div",{className:"space-y-4 text-sm",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"実験的機能です"}),(0,t.jsx)("p",{className:"text-muted-foreground",children:"音声入力の文字起こし結果を、ローカルで動作するLLM(mlx-lm / Qwen3-30B-A3B, MoE構成)で整形します。MoE構成のため実計算に使うアクティブパラメータは約3Bで、denseな同規模モデルより高速に動作します。精度・速度は環境に依存し、今後変更される可能性があります。"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"対応環境"}),(0,t.jsx)("p",{className:"text-muted-foreground",children:"Apple Silicon Mac (M1/M2/M3/M4) のみ対応。Windows/Linuxでは利用できません。メモリ32GB以上を推奨します。"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-foreground",children:"必要なもの(事前に手動でインストール)"}),(0,t.jsx)("ul",{className:"list-disc pl-5 text-muted-foreground",children:(0,t.jsx)("li",{children:"Python 3.9以降(Xcode Command Line Tools または Homebrew経由で入手可能)"})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-1 font-medium text-foreground",children:"セットアップ・起動"}),(0,t.jsx)("p",{className:"text-muted-foreground",children:"下のボタンから、依存関係のインストール・モデルのダウンロード・サーバー起動まで自動で行われます(初回はモデルサイズが大きく数分〜数十分かかります)。"}),C&&!V&&(0,t.jsx)("p",{className:"mt-1 text-destructive",children:"llm-serverが見つかりませんでした。インストールが壊れている可能性があります。"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"mb-1 font-medium text-foreground",children:"アンインストール"}),(0,t.jsxs)("p",{className:"text-muted-foreground",children:["ローカルLLMのためにダウンロードされるもの(Pythonの依存関係・LLMモデル、合計約17GB)は全て",(0,t.jsx)("code",{className:"rounded bg-muted px-1",children:"~/.tsunagi/llm"}),"に保存されます。不要になった場合はこのディレクトリを削除するだけで、関連リソースを完全に削除できます。"]})]}),(0,t.jsxs)("div",{className:"border-t border-border pt-4",children:[(!C||"not_running"===C.step||"error"===C.step)&&(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)(s.Button,{size:"default",onClick:()=>void O(),disabled:!C,children:[C?(0,t.jsx)(u.Bot,{}):(0,t.jsx)(a.Loader2,{className:"animate-spin"}),"LLMサーバーを起動"]}),C?.step==="error"&&C.error&&(0,t.jsx)("p",{className:"text-xs/relaxed text-destructive",children:C.error})]}),C?.step==="installing_deps"&&(0,t.jsxs)(s.Button,{size:"default",disabled:!0,children:[(0,t.jsx)(a.Loader2,{className:"animate-spin"}),"依存関係をインストール中... (数分かかる場合があります)"]}),C?.step==="downloading_model"&&(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs/relaxed text-muted-foreground",children:[(0,t.jsx)(a.Loader2,{className:"size-4 animate-spin"}),"モデルをダウンロード中... (約17GB)"]}),_&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(v.Progress,{value:z}),(0,t.jsxs)("p",{className:"text-xs/relaxed text-muted-foreground",children:[M(_.downloadedBytes)," / ",M(_.totalBytes)," (",z.toFixed(0),"%) ・ ",function(e){if(null===e)return"残り時間を計算中...";if(e<60)return`残り約${e}秒`;let t=Math.floor(e/60);return`残り約${t}分${e%60}秒`}(_.etaSeconds)]})]})]}),C?.step==="starting_server"&&(0,t.jsxs)(s.Button,{size:"default",disabled:!0,children:[(0,t.jsx)(a.Loader2,{className:"animate-spin"}),"サーバーを起動中... (モデルのロードに数十秒かかる場合があります)"]}),C&&j.includes(C.step)&&(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsxs)("span",{className:"flex items-center gap-2 text-success",children:[(0,t.jsx)(c.CheckCircle2,{className:"size-4"}),"サーバーは起動しています"]}),(0,t.jsxs)(s.Button,{size:"default",variant:"outline",onClick:()=>void B(),children:[(0,t.jsx)(n.Square,{}),"サーバーを停止"]})]})]})]})})]})}let C="tsunagi:whisper-prompt",k="tsunagi:llm-system-prompt",N=["running","running_external"];function S({onTranscribed:e}){let[d,u]=(0,r.useState)(!1),[c,f]=(0,r.useState)("idle"),[m,p]=(0,r.useState)(0),[v,g]=(0,r.useState)(null),x=(0,r.useRef)(null),b=(0,r.useRef)([]),y=(0,r.useRef)(null),j=(0,r.useRef)(null),M=(0,r.useRef)(null),w=(0,r.useRef)(0),E=(0,r.useRef)(0);(0,r.useEffect)(()=>{u("true"===localStorage.getItem("tsunagi:voice-input-enabled"))},[]),(0,r.useEffect)(()=>{if(!d)return;let e=!1,t=async()=>{try{let t=await fetch((0,l.apiUrl)("/api/whisper/server/status")),r=await t.json();e||g(r.step)}catch{e||g("not_running")}};t();let r=setInterval(t,5e3);return()=>{e=!0,clearInterval(r)}},[d]);let L=(0,r.useCallback)(()=>{M.current&&(clearInterval(M.current),M.current=null),j.current?.close(),j.current=null,p(0)},[]);(0,r.useEffect)(()=>()=>{L()},[L]);let R=(0,r.useCallback)(e=>{let t=new AudioContext,r=t.createMediaStreamSource(e),a=t.createAnalyser();a.fftSize=2048,r.connect(a),j.current=t,w.current=0,E.current=0;let i=new Float32Array(a.fftSize);M.current=setInterval(()=>{a.getFloatTimeDomainData(i);let e=0;for(let t=0;t<i.length;t++)e+=i[t]*i[t];let t=Math.sqrt(e/i.length),r=Math.min(1,Math.max(0,((t>0?20*Math.log10(t):-60)- -60)/50));E.current=Math.max(E.current,r),w.current=.3*w.current+.7*r,p(w.current)},50)},[]),I=(0,r.useCallback)(async t=>{f("transcribing");try{let r=new FormData,a=localStorage.getItem(C);a&&r.append("prompt",a);let i="true"===localStorage.getItem(h);r.append("useLlm",String(i));let n=localStorage.getItem(k);n&&r.append("systemPrompt",n),r.append("file",t,"recording.webm");let s=await fetch((0,l.apiUrl)("/api/whisper/transcribe"),{method:"POST",body:r});if(!s.ok){let e=await s.json().catch(()=>null);throw Error(e?.error||`HTTPエラー: ${s.status}`)}let d=await s.json();d.warning&&o.toaster.create({type:"error",title:"LLM整形をスキップしました",description:d.warning}),d.text&&e(d.text)}catch(e){o.toaster.create({type:"error",title:"文字起こしに失敗しました",description:e instanceof Error?e.message:String(e)})}finally{f("idle")}},[e]),T=(0,r.useCallback)(async()=>{try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});y.current=e,b.current=[],R(e);let t=new MediaRecorder(e,{audioBitsPerSecond:128e3});t.ondataavailable=e=>{e.data.size>0&&b.current.push(e.data)},t.onstop=()=>{y.current?.getTracks().forEach(e=>e.stop()),y.current=null;let e=E.current;if(L(),e<.15){o.toaster.create({type:"error",title:"音声が検出されませんでした",description:"マイクに向かって話してから、もう一度お試しください。"}),f("idle");return}let t=new Blob(b.current,{type:"audio/webm"});I(t)},x.current=t,t.start(),f("recording")}catch(e){o.toaster.create({type:"error",title:"マイクにアクセスできませんでした",description:e instanceof Error?e.message:String(e)})}},[I,R,L]),P=(0,r.useCallback)(()=>{x.current?.stop()},[]);if(!d)return null;let O=null!==v&&N.includes(v);return(0,t.jsxs)("div",{className:"recording"===c?"inline-flex items-center gap-2 rounded-md bg-destructive/10 p-1":"inline-flex",children:[(0,t.jsx)(s.Button,{size:"icon",variant:"recording"===c?"destructive":"default",onClick:"recording"===c?P:()=>void T(),disabled:"transcribing"===c||"idle"===c&&!O,title:"recording"===c?"停止して入力":"idle"!==c||O?"音声入力":"Whisperサーバーが起動していません(Settingsから起動してください)",children:"transcribing"===c?(0,t.jsx)(a.Loader2,{className:"w-4 h-4 animate-spin"}):"recording"===c?(0,t.jsx)(n.Square,{className:"w-4 h-4"}):(0,t.jsx)(i.Mic,{className:"w-4 h-4"})}),"recording"===c&&(0,t.jsx)("div",{"aria-hidden":!0,className:"h-1.5 w-16 overflow-hidden rounded-full bg-background/60",children:(0,t.jsx)("div",{className:"h-full rounded-full bg-destructive",style:{width:`${Math.round(100*m)}%`}})})]})}}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33525,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},627,e=>{"use strict";var t=e.i(18050),r=e.i(71645);let n=(0,r.createContext)(void 0);function o(){return localStorage.getItem("theme")||"system"}e.s(["ThemeProvider",0,function({children:e}){let[i,u]=(0,r.useState)(o),[a,c]=(0,r.useState)("light");return(0,r.useEffect)(()=>{let e=window.matchMedia("(prefers-color-scheme: dark)"),t=document.documentElement,r=()=>{let r="system"===i?e.matches?"dark":"light":i;c(r),t.classList.toggle("dark","dark"===r)};r();let n=()=>{"system"===i&&r()};return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[i]),(0,t.jsx)(n.Provider,{value:{theme:i,setTheme:e=>{u(e),localStorage.setItem("theme",e),"system"===e?c(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"):c(e)},effectiveTheme:a},children:e})},"useTheme",0,function(){let e=(0,r.useContext)(n);if(void 0===e)throw Error("useTheme must be used within a ThemeProvider");return e}])},12382,88784,e=>{"use strict";var t,r,n=e.i(18050),o=e.i(71645);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?u(Object(r),!0).forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function c(e){return function t(){for(var r=this,n=arguments.length,o=Array(n),i=0;i<n;i++)o[i]=arguments[i];return o.length>=e.length?e.apply(this,o):function(){for(var e=arguments.length,n=Array(e),i=0;i<e;i++)n[i]=arguments[i];return t.apply(r,[].concat(o,n))}}}function l(e){return({}).toString.call(e).includes("Object")}function s(e){return"function"==typeof e}var d=c(function(e,t){throw Error(e[t]||e.default)})({initialIsRequired:"initial state is required",initialType:"initial state should be an object",initialContent:"initial state shouldn't be an empty object",handlerType:"handler should be an object or a function",handlersType:"all handlers should be a functions",selectorType:"selector should be a function",changeType:"provided value of changes should be an object",changeField:'it seams you want to change a field in the state which is not specified in the "initial" state',default:"an unknown error accured in `state-local` package"}),f=function(e,t){return l(t)||d("changeType"),Object.keys(t).some(function(t){return!Object.prototype.hasOwnProperty.call(e,t)})&&d("changeField"),t},h=function(e){s(e)||d("selectorType")},p=function(e){s(e)||l(e)||d("handlerType"),l(e)&&Object.values(e).some(function(e){return!s(e)})&&d("handlersType")},g=function(e){e||d("initialIsRequired"),l(e)||d("initialType"),Object.keys(e).length||d("initialContent")};function m(e,t){return s(t)?t(e.current):t}function v(e,t){return e.current=a(a({},e.current),t),t}function y(e,t,r){return s(t)?t(e.current):Object.keys(r).forEach(function(r){var n;return null==(n=t[r])?void 0:n.call(t,e.current[r])}),r}var b={configIsRequired:"the configuration object is required",configType:"the configuration object should be an object",default:"an unknown error accured in `@monaco-editor/loader` package",deprecation:"Deprecation warning!\n You are using deprecated way of configuration.\n\n Instead of using\n monaco.config({ urls: { monacoBase: '...' } })\n use\n monaco.config({ paths: { vs: '...' } })\n\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\n "},w=(t=function(e,t){throw Error(e[t]||e.default)},function e(){for(var r=this,n=arguments.length,o=Array(n),i=0;i<n;i++)o[i]=arguments[i];return o.length>=t.length?t.apply(this,o):function(){for(var t=arguments.length,n=Array(t),i=0;i<t;i++)n[i]=arguments[i];return e.apply(r,[].concat(o,n))}})(b),j=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(e){return t.reduceRight(function(e,t){return t(e)},e)}},M={type:"cancelation",msg:"operation is manually canceled"};function E(e){var t=!1,r=new Promise(function(r,n){e.then(function(e){return t?n(M):r(e)}),e.catch(n)});return r.cancel=function(){return t=!0},r}var O=function(e){if(Array.isArray(e))return e}(r=({create:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};g(e),p(t);var r={current:e},n=c(y)(r,t),o=c(v)(r),i=c(f)(e),u=c(m)(r);return[function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(e){return e};return h(e),e(r.current)},function(e){(function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(e){return t.reduceRight(function(e,t){return t(e)},e)}})(n,o,i,u)(e)}]}}).create({config:{paths:{vs:"https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs"}},isInitialized:!1,resolve:null,reject:null,monaco:null}))||function(e){var t=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,n,o,i,u=[],a=!0,c=!1;try{o=(t=t.call(e)).next,!1;for(;!(a=(r=o.call(t)).done)&&(u.push(r.value),2!==u.length);a=!0);}catch(e){c=!0,n=e}finally{try{if(!a&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(c)throw n}}return u}}(r)||function(e){if(e){if("string"==typeof e)return i(e,2);var t=({}).toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?i(e,2):void 0}}(r)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),x=O[0],k=O[1];function C(e){return document.body.appendChild(e)}function T(e){var t,r,n=x(function(e){return{config:e.config,reject:e.reject}}),o=(t="".concat(n.config.paths.vs,"/loader.js"),r=document.createElement("script"),t&&(r.src=t),r);return o.onload=function(){return e()},o.onerror=n.reject,o}function S(){var e=x(function(e){return{config:e.config,resolve:e.resolve,reject:e.reject}}),t=window.require;t.config(e.config),t(["vs/editor/editor.main"],function(t){var r=t.m||t;P(r),e.resolve(r)},function(t){e.reject(t)})}function P(e){x().monaco||k({monaco:e})}var R=new Promise(function(e,t){return k({resolve:e,reject:t})}),L=function(){var e=x(function(e){return{monaco:e.monaco,isInitialized:e.isInitialized,resolve:e.resolve}});if(!e.isInitialized){if(k({isInitialized:!0}),e.monaco)return e.resolve(e.monaco),E(R);if(window.monaco&&window.monaco.editor)return P(window.monaco),e.resolve(window.monaco),E(R);j(C,T)(S)}return E(R)},N={display:"flex",position:"relative",textAlign:"initial"},V={width:"100%"},z={display:"none"},A={display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"},I=function({children:e}){return o.default.createElement("div",{style:A},e)},D=(0,o.memo)(function({width:e,height:t,isEditorReady:r,loading:n,_ref:i,className:u,wrapperProps:a}){return o.default.createElement("section",{style:{...N,width:e,height:t},...a},!r&&o.default.createElement(I,null,n),o.default.createElement("div",{ref:i,style:{...V,...!r&&z},className:u}))}),q=function(e){(0,o.useEffect)(e,[])},B=function(e,t,r=!0){let n=(0,o.useRef)(!0);(0,o.useEffect)(n.current||!r?()=>{n.current=!1}:e,t)};function F(){}function U(e,t,r,n){var o,i,u,a,c,l;return o=e,i=n,o.editor.getModel(K(o,i))||(u=e,a=t,c=r,l=n,u.editor.createModel(a,c,l?K(u,l):void 0))}function K(e,t){return e.Uri.parse(t)}(0,o.memo)(function({original:e,modified:t,language:r,originalLanguage:n,modifiedLanguage:i,originalModelPath:u,modifiedModelPath:a,keepCurrentOriginalModel:c=!1,keepCurrentModifiedModel:l=!1,theme:s="light",loading:d="Loading...",options:f={},height:h="100%",width:p="100%",className:g,wrapperProps:m={},beforeMount:v=F,onMount:y=F}){let[b,w]=(0,o.useState)(!1),[j,M]=(0,o.useState)(!0),E=(0,o.useRef)(null),O=(0,o.useRef)(null),x=(0,o.useRef)(null),k=(0,o.useRef)(y),C=(0,o.useRef)(v),T=(0,o.useRef)(!1);q(()=>{let e=L();return e.then(e=>(O.current=e)&&M(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>{let t;return E.current?(t=E.current?.getModel(),void(c||t?.original?.dispose(),l||t?.modified?.dispose(),E.current?.dispose())):e.cancel()}}),B(()=>{if(E.current&&O.current){let t=E.current.getOriginalEditor(),o=U(O.current,e||"",n||r||"text",u||"");o!==t.getModel()&&t.setModel(o)}},[u],b),B(()=>{if(E.current&&O.current){let e=E.current.getModifiedEditor(),n=U(O.current,t||"",i||r||"text",a||"");n!==e.getModel()&&e.setModel(n)}},[a],b),B(()=>{let e=E.current.getModifiedEditor();e.getOption(O.current.editor.EditorOption.readOnly)?e.setValue(t||""):t!==e.getValue()&&(e.executeEdits("",[{range:e.getModel().getFullModelRange(),text:t||"",forceMoveMarkers:!0}]),e.pushUndoStop())},[t],b),B(()=>{E.current?.getModel()?.original.setValue(e||"")},[e],b),B(()=>{let{original:e,modified:t}=E.current.getModel();O.current.editor.setModelLanguage(e,n||r||"text"),O.current.editor.setModelLanguage(t,i||r||"text")},[r,n,i],b),B(()=>{O.current?.editor.setTheme(s)},[s],b),B(()=>{E.current?.updateOptions(f)},[f],b);let S=(0,o.useCallback)(()=>{if(!O.current)return;C.current(O.current);let o=U(O.current,e||"",n||r||"text",u||""),c=U(O.current,t||"",i||r||"text",a||"");E.current?.setModel({original:o,modified:c})},[r,t,i,e,n,u,a]),P=(0,o.useCallback)(()=>{!T.current&&x.current&&(E.current=O.current.editor.createDiffEditor(x.current,{automaticLayout:!0,...f}),S(),O.current?.editor.setTheme(s),w(!0),T.current=!0)},[f,s,S]);return(0,o.useEffect)(()=>{b&&k.current(E.current,O.current)},[b]),(0,o.useEffect)(()=>{j||b||P()},[j,b,P]),o.default.createElement(D,{width:p,height:h,isEditorReady:b,loading:d,_ref:x,className:g,wrapperProps:m})});var _=function(e){let t=(0,o.useRef)();return(0,o.useEffect)(()=>{t.current=e},[e]),t.current},$=new Map,J=(0,o.memo)(function({defaultValue:e,defaultLanguage:t,defaultPath:r,value:n,language:i,path:u,theme:a="light",line:c,loading:l="Loading...",options:s={},overrideServices:d={},saveViewState:f=!0,keepCurrentModel:h=!1,width:p="100%",height:g="100%",className:m,wrapperProps:v={},beforeMount:y=F,onMount:b=F,onChange:w,onValidate:j=F}){let[M,E]=(0,o.useState)(!1),[O,x]=(0,o.useState)(!0),k=(0,o.useRef)(null),C=(0,o.useRef)(null),T=(0,o.useRef)(null),S=(0,o.useRef)(b),P=(0,o.useRef)(y),R=(0,o.useRef)(),N=(0,o.useRef)(n),V=_(u),z=(0,o.useRef)(!1),A=(0,o.useRef)(!1);q(()=>{let e=L();return e.then(e=>(k.current=e)&&x(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>C.current?void(R.current?.dispose(),h?f&&$.set(u,C.current.saveViewState()):C.current.getModel()?.dispose(),C.current.dispose()):e.cancel()}),B(()=>{let o=U(k.current,e||n||"",t||i||"",u||r||"");o!==C.current?.getModel()&&(f&&$.set(V,C.current?.saveViewState()),C.current?.setModel(o),f&&C.current?.restoreViewState($.get(u)))},[u],M),B(()=>{C.current?.updateOptions(s)},[s],M),B(()=>{C.current&&void 0!==n&&(C.current.getOption(k.current.editor.EditorOption.readOnly)?C.current.setValue(n):n!==C.current.getValue()&&(A.current=!0,C.current.executeEdits("",[{range:C.current.getModel().getFullModelRange(),text:n,forceMoveMarkers:!0}]),C.current.pushUndoStop(),A.current=!1))},[n],M),B(()=>{let e=C.current?.getModel();e&&i&&k.current?.editor.setModelLanguage(e,i)},[i],M),B(()=>{void 0!==c&&C.current?.revealLine(c)},[c],M),B(()=>{k.current?.editor.setTheme(a)},[a],M);let I=(0,o.useCallback)(()=>{if(!(!T.current||!k.current)&&!z.current){P.current(k.current);let o=u||r,l=U(k.current,n||e||"",t||i||"",o||"");C.current=k.current?.editor.create(T.current,{model:l,automaticLayout:!0,...s},d),f&&C.current.restoreViewState($.get(o)),k.current.editor.setTheme(a),void 0!==c&&C.current.revealLine(c),E(!0),z.current=!0}},[e,t,r,n,i,u,s,d,f,a,c]);return(0,o.useEffect)(()=>{M&&S.current(C.current,k.current)},[M]),(0,o.useEffect)(()=>{O||M||I()},[O,M,I]),N.current=n,(0,o.useEffect)(()=>{M&&w&&(R.current?.dispose(),R.current=C.current?.onDidChangeModelContent(e=>{A.current||w(C.current.getValue(),e)}))},[M,w]),(0,o.useEffect)(()=>{if(M){let e=k.current.editor.onDidChangeMarkers(e=>{let t=C.current.getModel()?.uri;if(t&&e.find(e=>e.path===t.path)){let e=k.current.editor.getModelMarkers({resource:t});j?.(e)}});return()=>{e?.dispose()}}return()=>{}},[M,j]),o.default.createElement(D,{width:p,height:g,isEditorReady:M,loading:l,_ref:T,className:m,wrapperProps:v})});e.s(["Editor",0,J],88784);var W=e.i(627),H=e.i(68995),Y=e.i(85902);let G="u">typeof navigator&&/Mac/.test(navigator.platform);function Q(e){let t=e.getModel();if(!t)return;let r=t.getLineCount(),n=t.getLineMaxColumn(r);e.setPosition({lineNumber:r,column:n})}e.s(["MonacoEditorModal",0,function({open:e,onOpenChange:t,onSubmit:r,initialValue:i="",title:u="Editor",submitLabel:a="Submit",language:c="plaintext"}){let l=(0,o.useRef)(null),s=(0,o.useRef)(()=>{}),d=(0,o.useRef)(()=>{}),f=(0,o.useRef)(e),[h,p]=(0,o.useState)(!1),{effectiveTheme:g}=(0,W.useTheme)();function m(){r(l.current?.getValue()??"")}function v(){l.current?.setValue(""),t({open:!1})}return(0,o.useLayoutEffect)(()=>{s.current=m,d.current=v,f.current=e}),(0,o.useEffect)(()=>{if(!e||!l.current)return;l.current.setValue(i??""),Q(l.current),l.current.layout();let t=setTimeout(()=>{f.current&&(l.current?.layout(),l.current?.focus())},50);return()=>clearTimeout(t)},[e,i]),(0,n.jsx)(H.Dialog,{open:e,onOpenChange:e=>{e.open||(l.current?.setValue(""),t(e))},title:u,maxWidth:"4xl",showCloseButton:!0,trapFocus:!1,restoreFocus:!1,dismissOnEsc:!h,children:(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsx)("div",{className:"border border-border rounded overflow-hidden",style:{height:"clamp(200px, 50vh, 600px)"},children:(0,n.jsx)(J,{height:"100%",defaultLanguage:c,defaultValue:"",onMount:(e,t)=>{l.current=e,e.setValue(i??""),Q(e),e.onDidLayoutChange(()=>{f.current&&!e.hasTextFocus()&&e.focus()}),e.onDidFocusEditorText(()=>p(!0)),e.onDidBlurEditorText(()=>p(!1)),e.layout(),e.focus(),e.onKeyDown(e=>{e.keyCode===t.KeyCode.Enter&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),e.stopPropagation(),s.current())})},options:{minimap:{enabled:!1},lineNumbers:"on",wordWrap:"on",fontSize:13,scrollBeyondLastLine:!1},theme:"dark"===g?"vs-dark":"vs-light"})}),(0,n.jsxs)("p",{className:"text-xs text-muted-foreground",children:[G?"Cmd+Enter":"Ctrl+Enter"," で",a]}),(0,n.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,n.jsx)(Y.Button,{variant:"outline",size:"lg",onClick:v,children:"Cancel"}),(0,n.jsx)(Y.Button,{size:"lg",onClick:m,children:a})]})]})})}],12382)},57787,e=>{"use strict";e.s(["ConnectionStatus",0,function(){return null}])},29024,e=>{"use strict";var t=e.i(18050),r=e.i(627),n=e.i(85699),o=e.i(23287),o=o,i=e.i(75254);let u=(0,i.default)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]),a=(0,i.default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),c=(0,i.default)("octagon-x",[["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",key:"2d38gg"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);var l=e.i(17521),l=l;let s=({...e})=>{let{effectiveTheme:i}=(0,r.useTheme)();return(0,t.jsx)(n.Toaster,{theme:i,className:"toaster group",icons:{success:(0,t.jsx)(o.default,{className:"size-4"}),info:(0,t.jsx)(u,{className:"size-4"}),warning:(0,t.jsx)(a,{className:"size-4"}),error:(0,t.jsx)(c,{className:"size-4"}),loading:(0,t.jsx)(l.default,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},toastOptions:{classNames:{toast:"cn-toast"}},...e})};e.s(["ToastProvider",0,function(){return(0,t.jsx)(s,{position:"bottom-right",richColors:!0,closeButton:!0})}],29024)},67570,e=>{"use strict";var t=e.i(18050),r=e.i(71645),n=e.i(12382),o=e.i(70935);e.s(["EditorSessionProvider",0,function(){let[e,i]=(0,r.useState)(null);(0,r.useEffect)(()=>{function e(e){let{sessionId:t,content:r}=e.detail;i({sessionId:t,content:r})}return window.addEventListener("editor-session-open-request",e),()=>{window.removeEventListener("editor-session-open-request",e)}},[]);let u=(0,r.useRef)(null);async function a(t){e&&(await fetch((0,o.apiUrl)(`/api/editor/session/${e.sessionId}/complete`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:t})}),i(null))}async function c(){e&&(await fetch((0,o.apiUrl)(`/api/editor/session/${e.sessionId}/complete`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:e.content})}),i(null))}return(0,r.useEffect)(()=>{let t=u.current;null===t&&null!==e&&window.dispatchEvent(new CustomEvent("editor-session-open")),null!==t&&null===e&&window.dispatchEvent(new CustomEvent("editor-session-done")),u.current=e},[e]),(0,t.jsx)(n.MonacoEditorModal,{open:null!==e,onOpenChange:e=>{e.open||c()},onSubmit:a,initialValue:e?.content??"",title:"Edit Prompt",submitLabel:"Submit"})}])}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,41241,19556,9752,20486,t=>{"use strict";var s=t.i(49915),a=(0,t.i(65485).default)(Object.keys,Object),e=Object.prototype.hasOwnProperty;let i=function(t){if(!(0,s.default)(t))return a(t);var i=[];for(var l in Object(t))e.call(t,l)&&"constructor"!=l&&i.push(l);return i};t.s(["default",0,i],19556);var l=t.i(47244),n=t.i(56176),r=(0,l.default)(n.default,"DataView"),c=t.i(44483),o=(0,l.default)(n.default,"Promise"),u=(0,l.default)(n.default,"Set");t.s(["default",0,u],9752);var h=(0,l.default)(n.default,"WeakMap"),d=t.i(35287),m=t.i(66762),p="[object Map]",f="[object Promise]",k="[object Set]",j="[object WeakMap]",v="[object DataView]",g=(0,m.default)(r),y=(0,m.default)(c.default),b=(0,m.default)(o),w=(0,m.default)(u),P=(0,m.default)(h),_=d.default;(r&&_(new r(new ArrayBuffer(1)))!=v||c.default&&_(new c.default)!=p||o&&_(o.resolve())!=f||u&&_(new u)!=k||h&&_(new h)!=j)&&(_=function(t){var s=(0,d.default)(t),a="[object Object]"==s?t.constructor:void 0,e=a?(0,m.default)(a):"";if(e)switch(e){case g:return v;case y:return p;case b:return f;case w:return k;case P:return j}return s});let q=_;t.s(["default",0,q],20486);var z=t.i(15300),x=t.i(44071),L=t.i(41338),$=t.i(3745),F=t.i(1645),A=Object.prototype.hasOwnProperty;t.s(["default",0,function(t){if(null==t)return!0;if((0,L.default)(t)&&((0,x.default)(t)||"string"==typeof t||"function"==typeof t.splice||(0,$.default)(t)||(0,F.default)(t)||(0,z.default)(t)))return!t.length;var a=q(t);if("[object Map]"==a||"[object Set]"==a)return!t.size;if((0,s.default)(t))return!i(t).length;for(var e in t)if(A.call(t,e))return!1;return!0}],41241)},44917,t=>{"use strict";var s=t.i(96977),a=t.i(71206);t.i(47716);var e=t.i(23685),i=(0,a.__name)(t=>{let{securityLevel:a}=(0,s.getConfig2)(),i=(0,e.select)("body");if("sandbox"===a){let s=(0,e.select)(`#i${t}`),a=s.node()?.contentDocument??document;i=(0,e.select)(a.body)}return i.select(`#${t}`)},"selectSvgElement");t.s(["selectSvgElement",0,i])},3262,t=>{"use strict";var s=t.i(31360),a=t.i(60884),e=t.i(29432),i=t.i(96977),l=t.i(71206),n={common:i.common_default,getConfig:i.getConfig,insertCluster:a.insertCluster,insertEdge:s.insertEdge,insertEdgeLabel:s.insertEdgeLabel,insertMarkers:s.markers_default,insertNode:a.insertNode,interpolateToCurve:e.interpolateToCurve,labelHelper:a.labelHelper,log:l.log,positionEdgeLabel:s.positionEdgeLabel},r={},c=(0,l.__name)(t=>{for(let s of t)r[s.name]=s},"registerLayoutLoaders");(0,l.__name)(()=>{c([{name:"dagre",loader:(0,l.__name)(async()=>await t.A(92568),"loader")},{name:"cose-bilkent",loader:(0,l.__name)(async()=>await t.A(62369),"loader")}])},"registerDefaultLayoutLoaders")();var o=(0,l.__name)(async(t,s)=>{if(!(t.layoutAlgorithm in r))throw Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);if(t.diagramId)for(let s of t.nodes){let a=s.domId||s.id;s.domId=`${t.diagramId}-${a}`}let a=r[t.layoutAlgorithm],e=await a.loader(),{theme:i,themeVariables:l}=t.config,{useGradient:c,gradientStart:o,gradientStop:u}=l,h=s.attr("id");if(s.append("defs").append("filter").attr("id",`${h}-drop-shadow`).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${i?.includes("dark")?"#FFFFFF":"#000000"}`),s.append("defs").append("filter").attr("id",`${h}-drop-shadow-small`).attr("height","150%").attr("width","150%").append("feDropShadow").attr("dx","2").attr("dy","2").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${i?.includes("dark")?"#FFFFFF":"#000000"}`),c){let t=s.append("linearGradient").attr("id",s.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");t.append("svg:stop").attr("offset","0%").attr("stop-color",o).attr("stop-opacity",1),t.append("svg:stop").attr("offset","100%").attr("stop-color",u).attr("stop-opacity",1)}return e.render(t,s,n,{algorithm:a.algorithm})},"render"),u=(0,l.__name)((t="",{fallback:s="dagre"}={})=>{if(t in r)return t;if(s in r)return l.log.warn(`Layout algorithm ${t} is not registered. Using ${s} as fallback.`),s;throw Error(`Both layout algorithms ${t} and ${s} are not registered.`)},"getRegisteredLayoutAlgorithm");t.s(["getRegisteredLayoutAlgorithm",0,u,"registerLayoutLoaders",0,c,"render",0,o])},471,t=>{"use strict";let s=(0,t.i(75254).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);t.s(["ArrowLeft",0,s],471)},88699,t=>{"use strict";let s=(0,t.i(75254).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);t.s(["Pencil",0,s],88699)},46349,t=>{"use strict";let s=(0,t.i(75254).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);t.s(["default",0,s])},39484,t=>{t.v(s=>Promise.all(["static/chunks/002jt~~cq5_aa.js"].map(s=>t.l(s))).then(()=>s(16400)))},92568,t=>{t.v(s=>Promise.all(["static/chunks/0bew-tpzkv4a6.js","static/chunks/0hc31lz26e0bj.js","static/chunks/156lsa3n_7-g1.js"].map(s=>t.l(s))).then(()=>s(68053)))},62369,t=>{t.v(s=>Promise.all(["static/chunks/0t-ecot2ot8jq.js","static/chunks/0s2ei~z99yg.7.js"].map(s=>t.l(s))).then(()=>s(97810)))},78997,t=>{t.v(s=>Promise.all(["static/chunks/0w4h2u4jedq4..js","static/chunks/0v8zy131j2_sl.js"].map(s=>t.l(s))).then(()=>s(77010)))},28146,t=>{t.v(s=>Promise.all(["static/chunks/179i-blt6kp34.js","static/chunks/004q74ucr0rud.js"].map(s=>t.l(s))).then(()=>s(26067)))},80472,t=>{t.v(s=>Promise.all(["static/chunks/0-whcx~709zzu.js"].map(s=>t.l(s))).then(()=>s(50032)))},83305,t=>{t.v(s=>Promise.all(["static/chunks/00h5q76-kypod.js","static/chunks/0f6mqg1npiv.t.js","static/chunks/0g7ov558axacn.js"].map(s=>t.l(s))).then(()=>s(8709)))},34606,t=>{t.v(s=>Promise.all(["static/chunks/0t-7~zw5_oj33.js","static/chunks/0t1nhjmm.2-8-.js"].map(s=>t.l(s))).then(()=>s(13976)))},23526,t=>{t.v(s=>Promise.all(["static/chunks/0zz1c.5ttlw75.js","static/chunks/0f6mqg1npiv.t.js","static/chunks/00h5q76-kypod.js"].map(s=>t.l(s))).then(()=>s(60498)))},3931,t=>{t.v(s=>Promise.all(["static/chunks/0egss2l0vp3iv.js","static/chunks/0f6mqg1npiv.t.js","static/chunks/00h5q76-kypod.js"].map(s=>t.l(s))).then(()=>s(79567)))},67051,t=>{t.v(s=>Promise.all(["static/chunks/0v~puv980n2mn.js"].map(s=>t.l(s))).then(()=>s(51778)))},36080,t=>{t.v(s=>Promise.all(["static/chunks/0_u58hj44ucg2.js","static/chunks/0coux02phyasu.js"].map(s=>t.l(s))).then(()=>s(79003)))},3156,t=>{t.v(s=>Promise.all(["static/chunks/0~fjlnit~fkey.js"].map(s=>t.l(s))).then(()=>s(91739)))},71209,t=>{t.v(s=>Promise.all(["static/chunks/0njmix7y_6miv.js","static/chunks/0z9df3ijvbr8h.js"].map(s=>t.l(s))).then(()=>s(94614)))},78922,t=>{t.v(s=>Promise.all(["static/chunks/0nt-wtu-~b7hv.js","static/chunks/0nwbvs~t8m~k6.js"].map(s=>t.l(s))).then(()=>s(99223)))},10404,t=>{t.v(s=>Promise.all(["static/chunks/0puq-xa16mucw.js","static/chunks/0nwbvs~t8m~k6.js"].map(s=>t.l(s))).then(()=>s(25730)))},81283,t=>{t.v(s=>Promise.all(["static/chunks/0bew-tpzkv4a6.js","static/chunks/104dsd7mk1jyt.js","static/chunks/0.fiftciismd2.js","static/chunks/0hc31lz26e0bj.js"].map(s=>t.l(s))).then(()=>s(24924)))},41605,t=>{t.v(s=>Promise.all(["static/chunks/0vj43fihkfmqz.js","static/chunks/0.fiftciismd2.js"].map(s=>t.l(s))).then(()=>s(32579)))},78877,t=>{t.v(s=>Promise.all(["static/chunks/0lmm~3cjla0c9.js"].map(s=>t.l(s))).then(()=>s(21392)))},27415,t=>{t.v(s=>Promise.all(["static/chunks/0rr4nl_auvf0b.js"].map(s=>t.l(s))).then(()=>s(92280)))},44319,t=>{t.v(s=>Promise.all(["static/chunks/0l_tj98f_5ot-.js"].map(s=>t.l(s))).then(()=>s(84201)))},31376,t=>{t.v(s=>Promise.all(["static/chunks/0-_x27yxy_uq_.js"].map(s=>t.l(s))).then(()=>s(3054)))},34215,t=>{t.v(s=>Promise.all(["static/chunks/0kx.ki.9u_0dy.js"].map(s=>t.l(s))).then(()=>s(30770)))},11980,t=>{t.v(s=>Promise.all(["static/chunks/0bb.y5mii27l0.js","static/chunks/0f6mqg1npiv.t.js","static/chunks/00h5q76-kypod.js"].map(s=>t.l(s))).then(()=>s(39342)))},70234,t=>{t.v(s=>Promise.all(["static/chunks/0g8qw208n3i89.js","static/chunks/0f6mqg1npiv.t.js","static/chunks/00h5q76-kypod.js"].map(s=>t.l(s))).then(()=>s(43020)))},44243,t=>{t.v(s=>Promise.all(["static/chunks/06x~dj4kp-z9f.js","static/chunks/11905-quym2vs.js","static/chunks/043yk9d-7bl43.js"].map(s=>t.l(s))).then(()=>s(15508)))},51365,t=>{t.v(s=>Promise.all(["static/chunks/0r4wgiv_kwiro.js","static/chunks/0f6mqg1npiv.t.js","static/chunks/00h5q76-kypod.js"].map(s=>t.l(s))).then(()=>s(78730)))},46201,t=>{t.v(s=>Promise.all(["static/chunks/1158vq~dpuyl-.js","static/chunks/00h5q76-kypod.js","static/chunks/0f6mqg1npiv.t.js","static/chunks/0s2ei~z99yg.7.js","static/chunks/0lr2ip~4h2o.z.js"].map(s=>t.l(s))).then(()=>s(38206)))},48926,t=>{t.v(s=>Promise.all(["static/chunks/0kl8vyx5367.j.js"].map(s=>t.l(s))).then(()=>s(90158)))},81291,t=>{t.v(s=>Promise.all(["static/chunks/17me7gnh4-..3.js"].map(s=>t.l(s))).then(()=>s(4447)))},31656,t=>{t.v(s=>Promise.all(["static/chunks/00h5q76-kypod.js","static/chunks/0f6mqg1npiv.t.js","static/chunks/0_7ef.hja3s4s.js"].map(s=>t.l(s))).then(()=>s(68025)))},22654,t=>{t.v(s=>Promise.all(["static/chunks/00h5q76-kypod.js","static/chunks/0f6mqg1npiv.t.js","static/chunks/0oryo.isv4jwb.js"].map(s=>t.l(s))).then(()=>s(67933)))}]);