botmux 2.99.0 → 2.101.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/README.en.md +33 -7
  2. package/README.md +33 -7
  3. package/dist/adapters/backend/sandbox.d.ts +33 -4
  4. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  5. package/dist/adapters/backend/sandbox.js +90 -29
  6. package/dist/adapters/backend/sandbox.js.map +1 -1
  7. package/dist/adapters/cli/hermes.d.ts.map +1 -1
  8. package/dist/adapters/cli/hermes.js +6 -0
  9. package/dist/adapters/cli/hermes.js.map +1 -1
  10. package/dist/adapters/cli/opencode.d.ts.map +1 -1
  11. package/dist/adapters/cli/opencode.js +241 -13
  12. package/dist/adapters/cli/opencode.js.map +1 -1
  13. package/dist/adapters/cli/traex.d.ts.map +1 -1
  14. package/dist/adapters/cli/traex.js +8 -6
  15. package/dist/adapters/cli/traex.js.map +1 -1
  16. package/dist/adapters/cli/types.d.ts +10 -3
  17. package/dist/adapters/cli/types.d.ts.map +1 -1
  18. package/dist/bot-registry.d.ts +12 -0
  19. package/dist/bot-registry.d.ts.map +1 -1
  20. package/dist/bot-registry.js +10 -3
  21. package/dist/bot-registry.js.map +1 -1
  22. package/dist/cli.d.ts.map +1 -1
  23. package/dist/cli.js +659 -154
  24. package/dist/cli.js.map +1 -1
  25. package/dist/core/cost-calculator.d.ts.map +1 -1
  26. package/dist/core/cost-calculator.js +26 -36
  27. package/dist/core/cost-calculator.js.map +1 -1
  28. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  29. package/dist/core/dashboard-ipc-server.js +37 -2
  30. package/dist/core/dashboard-ipc-server.js.map +1 -1
  31. package/dist/core/session-manager.d.ts +11 -0
  32. package/dist/core/session-manager.d.ts.map +1 -1
  33. package/dist/core/session-manager.js +87 -17
  34. package/dist/core/session-manager.js.map +1 -1
  35. package/dist/core/worker-pool.d.ts.map +1 -1
  36. package/dist/core/worker-pool.js +6 -0
  37. package/dist/core/worker-pool.js.map +1 -1
  38. package/dist/daemon.d.ts +1 -1
  39. package/dist/daemon.d.ts.map +1 -1
  40. package/dist/daemon.js +24 -8
  41. package/dist/daemon.js.map +1 -1
  42. package/dist/dashboard/bot-onboarding.d.ts +6 -0
  43. package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
  44. package/dist/dashboard/bot-onboarding.js +3 -1
  45. package/dist/dashboard/bot-onboarding.js.map +1 -1
  46. package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
  47. package/dist/dashboard/web/bot-onboarding.js +24 -3
  48. package/dist/dashboard/web/bot-onboarding.js.map +1 -1
  49. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  50. package/dist/dashboard/web/i18n.js +14 -4
  51. package/dist/dashboard/web/i18n.js.map +1 -1
  52. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  53. package/dist/dashboard/web/sessions.js +5 -19
  54. package/dist/dashboard/web/sessions.js.map +1 -1
  55. package/dist/dashboard-web/app.js +40 -33
  56. package/dist/dashboard-web/chunks/{bot-defaults-page-3EV7K6LJ.js → bot-defaults-page-HOGLABBC.js} +1 -1
  57. package/dist/dashboard-web/chunks/{chunk-NASYW5FD.js → chunk-ECXPBQ3J.js} +1 -1
  58. package/dist/dashboard-web/chunks/chunk-MR57RUVP.js +31 -0
  59. package/dist/dashboard-web/chunks/{connectors-XPZKEHF6.js → connectors-UGTF4Q4I.js} +1 -1
  60. package/dist/dashboard-web/chunks/{groups-page-C54PVKYP.js → groups-page-IKTCMQ4A.js} +1 -1
  61. package/dist/dashboard-web/chunks/{insights-page-BBQYR7WY.js → insights-page-7CCSHEKM.js} +1 -1
  62. package/dist/dashboard-web/chunks/{overview-page-5PJCAMID.js → overview-page-JOJW65P5.js} +1 -1
  63. package/dist/dashboard-web/chunks/{roles-page-APUDLPVM.js → roles-page-E2VN2DLV.js} +1 -1
  64. package/dist/dashboard-web/chunks/{schedules-WG2UKHSO.js → schedules-6QIHJIHX.js} +1 -1
  65. package/dist/dashboard-web/chunks/sessions-page-QN2TARF2.js +238 -0
  66. package/dist/dashboard-web/chunks/{settings-page-OSBZNCXL.js → settings-page-WWTXB577.js} +1 -1
  67. package/dist/dashboard-web/chunks/{skills-page-Y3VUAOYG.js → skills-page-2FAUPQ6H.js} +1 -1
  68. package/dist/dashboard-web/chunks/{team-federation-page-CRH3WZPH.js → team-federation-page-PTBQQSFS.js} +1 -1
  69. package/dist/dashboard-web/chunks/{workflows-UB7OPYGI.js → workflows-ZNBB5KFV.js} +1 -1
  70. package/dist/dashboard.js +86 -1
  71. package/dist/dashboard.js.map +1 -1
  72. package/dist/i18n/en.d.ts.map +1 -1
  73. package/dist/i18n/en.js +2 -0
  74. package/dist/i18n/en.js.map +1 -1
  75. package/dist/i18n/zh.d.ts.map +1 -1
  76. package/dist/i18n/zh.js +2 -0
  77. package/dist/i18n/zh.js.map +1 -1
  78. package/dist/im/lark/card-builder.d.ts +2 -2
  79. package/dist/im/lark/card-builder.js +2 -2
  80. package/dist/im/lark/event-dispatcher.d.ts +8 -3
  81. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  82. package/dist/im/lark/event-dispatcher.js +45 -9
  83. package/dist/im/lark/event-dispatcher.js.map +1 -1
  84. package/dist/platform/bind.d.ts.map +1 -1
  85. package/dist/platform/bind.js +36 -15
  86. package/dist/platform/bind.js.map +1 -1
  87. package/dist/platform/binding.d.ts +5 -0
  88. package/dist/platform/binding.d.ts.map +1 -1
  89. package/dist/platform/binding.js +11 -0
  90. package/dist/platform/binding.js.map +1 -1
  91. package/dist/platform/platform-http.d.ts +11 -0
  92. package/dist/platform/platform-http.d.ts.map +1 -0
  93. package/dist/platform/platform-http.js +41 -0
  94. package/dist/platform/platform-http.js.map +1 -0
  95. package/dist/platform/tunnel-client.d.ts +14 -0
  96. package/dist/platform/tunnel-client.d.ts.map +1 -1
  97. package/dist/platform/tunnel-client.js +40 -3
  98. package/dist/platform/tunnel-client.js.map +1 -1
  99. package/dist/services/bot-union-ids-store.d.ts +9 -0
  100. package/dist/services/bot-union-ids-store.d.ts.map +1 -0
  101. package/dist/services/bot-union-ids-store.js +59 -0
  102. package/dist/services/bot-union-ids-store.js.map +1 -0
  103. package/dist/services/coco-transcript.d.ts.map +1 -1
  104. package/dist/services/coco-transcript.js +59 -64
  105. package/dist/services/coco-transcript.js.map +1 -1
  106. package/dist/services/jsonl-cursor.d.ts +12 -0
  107. package/dist/services/jsonl-cursor.d.ts.map +1 -1
  108. package/dist/services/jsonl-cursor.js +63 -4
  109. package/dist/services/jsonl-cursor.js.map +1 -1
  110. package/dist/services/opencode-paths.d.ts +7 -0
  111. package/dist/services/opencode-paths.d.ts.map +1 -0
  112. package/dist/services/opencode-paths.js +18 -0
  113. package/dist/services/opencode-paths.js.map +1 -0
  114. package/dist/services/platform-team-store.d.ts +37 -0
  115. package/dist/services/platform-team-store.d.ts.map +1 -0
  116. package/dist/services/platform-team-store.js +120 -0
  117. package/dist/services/platform-team-store.js.map +1 -0
  118. package/dist/services/team-groups-store.d.ts +14 -1
  119. package/dist/services/team-groups-store.d.ts.map +1 -1
  120. package/dist/services/team-groups-store.js +28 -1
  121. package/dist/services/team-groups-store.js.map +1 -1
  122. package/dist/setup/bot-config-editor.d.ts +6 -0
  123. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  124. package/dist/setup/bot-config-editor.js +18 -15
  125. package/dist/setup/bot-config-editor.js.map +1 -1
  126. package/dist/setup/interactive-select.d.ts +22 -0
  127. package/dist/setup/interactive-select.d.ts.map +1 -1
  128. package/dist/setup/interactive-select.js +101 -7
  129. package/dist/setup/interactive-select.js.map +1 -1
  130. package/dist/setup/open-platform-automation.d.ts +42 -0
  131. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  132. package/dist/setup/open-platform-automation.js +107 -0
  133. package/dist/setup/open-platform-automation.js.map +1 -1
  134. package/dist/setup/setup-args.d.ts +77 -0
  135. package/dist/setup/setup-args.d.ts.map +1 -0
  136. package/dist/setup/setup-args.js +272 -0
  137. package/dist/setup/setup-args.js.map +1 -0
  138. package/dist/types.d.ts +6 -0
  139. package/dist/types.d.ts.map +1 -1
  140. package/dist/worker.js +12 -2
  141. package/dist/worker.js.map +1 -1
  142. package/dist/workflows/attempt-resume.d.ts.map +1 -1
  143. package/dist/workflows/attempt-resume.js +4 -1
  144. package/dist/workflows/attempt-resume.js.map +1 -1
  145. package/package.json +1 -1
  146. package/dist/dashboard-web/chunks/chunk-JXLHRRJD.js +0 -31
  147. package/dist/dashboard-web/chunks/sessions-page-F3U5NFPD.js +0 -238
@@ -1,58 +1,65 @@
1
- import{a as g,b as H}from"./chunks/chunk-76J7PNZI.js";import{a as U,j as q,k as A,l as d,m as r,n as i,o as I,r as _,t as B,x as z,y as v}from"./chunks/chunk-JXLHRRJD.js";import"./chunks/chunk-7SZRL6FY.js";var p=null,w=null,x="glm-5.1",N=[];function h(){w!==null&&(window.clearInterval(w),w=null)}function S(){return p||(p=document.createElement("dialog"),p.className="onboarding-dialog",document.body.appendChild(p),p.addEventListener("close",h),p)}function de(e){return e.status==="waiting_for_scan"?r("botOnboarding.waiting"):e.status==="verifying"?r("botOnboarding.verifying"):e.status==="configuring_permissions"?e.permissionStatusMsg?`${r("botOnboarding.configuringPermissions")} ${e.permissionStatusMsg}`:r("botOnboarding.configuringPermissions"):e.status==="waiting_for_platform_scan"?r("botOnboarding.platformScanHint"):e.status==="needs_owner"?r("botOnboarding.needsOwner"):e.status==="completed"?r("botOnboarding.completed"):e.status==="failed"?`${r("botOnboarding.failed")}: ${i(e.message??e.error??"unknown")}`:r("botOnboarding.starting")}function ce(e){if(e.status!=="completed"&&e.status!=="needs_owner"||!e.permission)return"";let t=e.permission;if(t.ok){let o=[r("botOnboarding.permissionOk",{count:t.scopeCount??0})];t.skippedScopeCount&&t.skippedScopeCount>0&&o.push(r("botOnboarding.permissionSkipped",{count:t.skippedScopeCount})),t.versionId&&o.push(r("botOnboarding.permissionVersion",{version:i(t.versionId)}));let a=`<p class="hint-ok">\u2705 ${o.join(" ")}</p>`;return t.scopeWarning&&(a+=`<p class="hint-warn">\u26A0\uFE0F ${i(t.scopeWarning)}</p>`),a}let n=(e.remainingSteps??[]).map(o=>`<li><a href="${i(o.url)}" target="_blank" rel="noopener">${i(o.title)}</a></li>`).join("");return`<p class="hint-warn">\u26A0\uFE0F ${r("botOnboarding.permissionManual")}${t.message?`\uFF08${i(t.message)}\uFF09`:""}</p>`+(n?`<ol class="onboarding-steps">${n}</ol>`:"")}function ue(e,t){if(e.status!=="needs_owner")return"";let n=t?`<p class="form-error">${i(t)}</p>`:"";return`<form id="ob-owner-form" class="onboarding-form">
1
+ import{a as f,b as I}from"./chunks/chunk-76J7PNZI.js";import{a as A,j as _,k as B,l,m as o,n as i,o as z,r as K,t as F,x as N,y as O}from"./chunks/chunk-MR57RUVP.js";import"./chunks/chunk-7SZRL6FY.js";var m=null,M=null,k="glm-5.1",J=[];function y(){M!==null&&(window.clearInterval(M),M=null)}function $(){return m||(m=document.createElement("dialog"),m.className="onboarding-dialog",document.body.appendChild(m),m.addEventListener("close",y),m)}function pe(e){return e.status==="waiting_for_scan"?o("botOnboarding.waiting"):e.status==="verifying"?o("botOnboarding.verifying"):e.status==="configuring_permissions"?e.permissionStatusMsg?`${o("botOnboarding.configuringPermissions")} ${e.permissionStatusMsg}`:o("botOnboarding.configuringPermissions"):e.status==="waiting_for_platform_scan"?o("botOnboarding.platformScanHint"):e.status==="needs_owner"?o("botOnboarding.needsOwner"):e.status==="completed"?o("botOnboarding.completed"):e.status==="failed"?`${o("botOnboarding.failed")}: ${i(e.message??e.error??"unknown")}`:o("botOnboarding.starting")}function me(e){if(e.status!=="completed"&&e.status!=="needs_owner"||!e.permission)return"";let t=e.permission;if(t.ok){let r=[o("botOnboarding.permissionOk",{count:t.scopeCount??0})];t.skippedScopeCount&&t.skippedScopeCount>0&&r.push(o("botOnboarding.permissionSkipped",{count:t.skippedScopeCount})),t.versionId&&r.push(o("botOnboarding.permissionVersion",{version:i(t.versionId)}));let a=`<p class="hint-ok">\u2705 ${r.join(" ")}</p>`;return t.scopeWarning&&(a+=`<p class="hint-warn">\u26A0\uFE0F ${i(t.scopeWarning)}</p>`),a}let n=(e.remainingSteps??[]).map(r=>`<li><a href="${i(r.url)}" target="_blank" rel="noopener">${i(r.title)}</a></li>`).join("");return`<p class="hint-warn">\u26A0\uFE0F ${o("botOnboarding.permissionManual")}${t.message?`\uFF08${i(t.message)}\uFF09`:""}</p>`+(n?`<ol class="onboarding-steps">${n}</ol>`:"")}function ge(e,t){if(e.status!=="needs_owner")return"";let n=t?`<p class="form-error">${i(t)}</p>`:"";return`<form id="ob-owner-form" class="onboarding-form">
2
2
  <label class="onboarding-field">
3
- <span>${r("botOnboarding.ownerLabel")}</span>
4
- <input id="ob-owner" type="text" placeholder="${r("botOnboarding.ownerPlaceholder")}" autocomplete="off" spellcheck="false">
3
+ <span>${o("botOnboarding.ownerLabel")}</span>
4
+ <input id="ob-owner" type="text" placeholder="${o("botOnboarding.ownerPlaceholder")}" autocomplete="off" spellcheck="false">
5
5
  </label>
6
- <p class="hint-warn">${r("botOnboarding.ownerHint")}</p>
6
+ <p class="hint-warn">${o("botOnboarding.ownerHint")}</p>
7
7
  ${n}
8
8
  <menu class="onboarding-actions">
9
- <button type="submit" class="primary">${r("botOnboarding.ownerSubmit")}</button>
9
+ <button type="submit" class="primary">${o("botOnboarding.ownerSubmit")}</button>
10
10
  </menu>
11
- </form>`}function u(e,t){let n=S(),o=e.status==="waiting_for_scan"&&e.qrDataUrl?`<div class="qr-card">
12
- <img class="qr-image" src="${e.qrDataUrl}" alt="${r("botOnboarding.qrAlt")}">
13
- ${e.qrUrl?`<a class="onboarding-link" href="${i(e.qrUrl)}" target="_blank" rel="noopener">${r("botOnboarding.openLink")}</a>`:""}
11
+ </form>`}function c(e,t){let n=$(),r=e.status==="waiting_for_scan"&&e.qrDataUrl?`<div class="qr-card">
12
+ <img class="qr-image" src="${e.qrDataUrl}" alt="${o("botOnboarding.qrAlt")}">
13
+ ${e.qrUrl?`<a class="onboarding-link" href="${i(e.qrUrl)}" target="_blank" rel="noopener">${o("botOnboarding.openLink")}</a>`:""}
14
14
  </div>`:"",a=e.status==="waiting_for_platform_scan"&&e.platformQrDataUrl?`<div class="qr-card">
15
- <img class="qr-image" src="${e.platformQrDataUrl}" alt="${r("botOnboarding.platformQrAlt")}">
16
- </div>`:"",s=e.appId?`<p><b>App ID:</b> <code>${i(e.appId)}</code>`+(e.cliId?` \uFF5C <b>CLI:</b> <code>${i(e.cliId)}</code>`:"")+(e.workingDir?` \uFF5C <b>${r("botOnboarding.metaDir")}:</b> <code>${i(e.workingDir)}</code>`:"")+"</p>":"",c=e.status==="completed"?`<p class="hint-ok">${r("botOnboarding.restartHint")}</p>`:"";n.innerHTML=`<article>
15
+ <img class="qr-image" src="${e.platformQrDataUrl}" alt="${o("botOnboarding.platformQrAlt")}">
16
+ </div>`:"",s=e.appId?`<p><b>App ID:</b> <code>${i(e.appId)}</code>`+(e.cliId?` \uFF5C <b>CLI:</b> <code>${i(e.cliId)}</code>`:"")+(e.workingDir?` \uFF5C <b>${o("botOnboarding.metaDir")}:</b> <code>${i(e.workingDir)}</code>`:"")+"</p>":"",d=e.status==="completed"?`<p class="hint-ok">${o("botOnboarding.restartHint")}</p>`:"";n.innerHTML=`<article>
17
17
  <header>
18
- <h3>${r("botOnboarding.title")}</h3>
19
- <p>${r("botOnboarding.intro")}</p>
18
+ <h3>${o("botOnboarding.title")}</h3>
19
+ <p>${o("botOnboarding.intro")}</p>
20
20
  </header>
21
- <p class="onboarding-status status-${e.status}">${de(e)}</p>
22
- ${o}
21
+ <p class="onboarding-status status-${e.status}">${pe(e)}</p>
22
+ ${r}
23
23
  ${a}
24
24
  ${s}
25
- ${ce(e)}
26
- ${ue(e,t)}
27
- ${c}
28
- <form method="dialog"><button>${r("botOnboarding.close")}</button></form>
29
- </article>`,e.status==="needs_owner"&&n.querySelector("#ob-owner-form")?.addEventListener("submit",l=>{l.preventDefault();let k=n.querySelector("#ob-owner")?.value??"";pe(e,k)})}async function pe(e,t){if(!t.trim()){u(e,r("botOnboarding.ownerEmpty"));return}try{let n=await fetch(`/api/bot-onboarding/${encodeURIComponent(e.id)}/owner`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({owner:t.trim()})}),o=await n.json();if(!n.ok){u(e,o?.message??o?.error??r("botOnboarding.ownerInvalid"));return}o?.job&&u(o.job)}catch(n){u(e,n instanceof Error?n.message:String(n))}}async function me(){try{let e=await fetch("/api/cli-options"),t=await e.json();if(e.ok&&Array.isArray(t?.options))return typeof t.ttadkModelDefault=="string"&&t.ttadkModelDefault.trim()&&(x=t.ttadkModelDefault.trim()),Array.isArray(t.ttadkModelSuggestions)&&(N=t.ttadkModelSuggestions.filter(n=>typeof n=="string")),t.options}catch{}return[{id:"claude-code",label:"Claude"}]}function K(e){let t=p;if(!t)return;let n=t.querySelector("#ob-cli"),o=t.querySelector("#ob-model"),a=t.querySelector("#ob-model-suggestions");if(!n||!o)return;let s=e.find(l=>l.id===n.value),c=s?.gateway==="ttadk",y=c&&s?.acceptsModel!==!1;if(c&&!y){o.value="",o.disabled=!0,o.placeholder=r("botOnboarding.modelTtadkCocoPlaceholder");return}o.disabled=!1,y?(a&&(a.innerHTML=N.map(l=>`<option value="${i(l)}"></option>`).join("")),o.placeholder=r("botOnboarding.modelTtadkPlaceholder").replace("{model}",x),o.value.trim()||(o.value=x)):(a&&(a.innerHTML=""),o.placeholder=r("botOnboarding.modelPlaceholder"),o.value.trim()===x&&(o.value=""))}function M(e,t){let n=S(),o=e.map(l=>`<option value="${i(l.id)}">${i(l.label)}\uFF08${i(l.id)}\uFF09</option>`).join(""),a=t?`<p class="form-error">${i(t)}</p>`:"";n.innerHTML=`<article>
25
+ ${me(e)}
26
+ ${ge(e,t)}
27
+ ${d}
28
+ <form method="dialog"><button>${o("botOnboarding.close")}</button></form>
29
+ </article>`,e.status==="needs_owner"&&n.querySelector("#ob-owner-form")?.addEventListener("submit",u=>{u.preventDefault();let L=n.querySelector("#ob-owner")?.value??"";fe(e,L)})}async function fe(e,t){if(!t.trim()){c(e,o("botOnboarding.ownerEmpty"));return}try{let n=await fetch(`/api/bot-onboarding/${encodeURIComponent(e.id)}/owner`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({owner:t.trim()})}),r=await n.json();if(!n.ok){c(e,r?.message??r?.error??o("botOnboarding.ownerInvalid"));return}r?.job&&c(r.job)}catch(n){c(e,n instanceof Error?n.message:String(n))}}async function be(){try{let e=await fetch("/api/cli-options"),t=await e.json();if(e.ok&&Array.isArray(t?.options))return typeof t.ttadkModelDefault=="string"&&t.ttadkModelDefault.trim()&&(k=t.ttadkModelDefault.trim()),Array.isArray(t.ttadkModelSuggestions)&&(J=t.ttadkModelSuggestions.filter(n=>typeof n=="string")),t.options}catch{}return[{id:"claude-code",label:"Claude"}]}function W(e){let t=m;if(!t)return;let n=t.querySelector("#ob-cli"),r=t.querySelector("#ob-model"),a=t.querySelector("#ob-model-suggestions");if(!n||!r)return;let s=e.find(u=>u.id===n.value),d=s?.gateway==="ttadk",v=d&&s?.acceptsModel!==!1;if(d&&!v){r.value="",r.disabled=!0,r.placeholder=o("botOnboarding.modelTtadkCocoPlaceholder");return}r.disabled=!1,v?(a&&(a.innerHTML=J.map(u=>`<option value="${i(u)}"></option>`).join("")),r.placeholder=o("botOnboarding.modelTtadkPlaceholder").replace("{model}",k),r.value.trim()||(r.value=k)):(a&&(a.innerHTML=""),r.placeholder=o("botOnboarding.modelPlaceholder"),r.value.trim()===k&&(r.value=""))}function E(e,t){let n=$(),r=e.map(p=>`<option value="${i(p.id)}">${i(p.label)}\uFF08${i(p.id)}\uFF09</option>`).join(""),a=t?`<p class="form-error">${i(t)}</p>`:"";n.innerHTML=`<article>
30
30
  <header>
31
- <h3>${r("botOnboarding.title")}</h3>
32
- <p>${r("botOnboarding.intro")}</p>
31
+ <h3>${o("botOnboarding.title")}</h3>
32
+ <p>${o("botOnboarding.intro")}</p>
33
33
  </header>
34
34
  <form id="onboarding-form" class="onboarding-form">
35
35
  <label class="onboarding-field">
36
- <span>${r("botOnboarding.cliLabel")}</span>
37
- <select id="ob-cli">${o}</select>
36
+ <span>${o("botOnboarding.cliLabel")}</span>
37
+ <select id="ob-cli">${r}</select>
38
38
  </label>
39
39
  <label class="onboarding-field">
40
- <span>${r("botOnboarding.dirLabel")}</span>
41
- <input id="ob-dir" type="text" value="~" placeholder="${r("botOnboarding.dirPlaceholder")}" autocomplete="off" spellcheck="false">
40
+ <span>${o("botOnboarding.dirModeLabel")}</span>
41
+ <select id="ob-dir-mode">
42
+ <option value="fixed">${o("botOnboarding.dirModeFixed")}</option>
43
+ <option value="card">${o("botOnboarding.dirModeCard")}</option>
44
+ </select>
42
45
  </label>
43
46
  <label class="onboarding-field">
44
- <span>${r("botOnboarding.modelLabel")}</span>
45
- <input id="ob-model" type="text" list="ob-model-suggestions" placeholder="${r("botOnboarding.modelPlaceholder")}" autocomplete="off" spellcheck="false">
47
+ <span id="ob-dir-label">${o("botOnboarding.dirLabelFixed")}</span>
48
+ <input id="ob-dir" type="text" value="~" placeholder="${o("botOnboarding.dirPlaceholderFixed")}" autocomplete="off" spellcheck="false">
49
+ </label>
50
+ <label class="onboarding-field">
51
+ <span>${o("botOnboarding.modelLabel")}</span>
52
+ <input id="ob-model" type="text" list="ob-model-suggestions" placeholder="${o("botOnboarding.modelPlaceholder")}" autocomplete="off" spellcheck="false">
46
53
  <datalist id="ob-model-suggestions"></datalist>
47
54
  </label>
48
55
  ${a}
49
56
  <menu class="onboarding-actions">
50
- <button type="button" id="ob-cancel">${r("botOnboarding.cancel")}</button>
51
- <button type="submit" class="primary">${r("botOnboarding.startScan")}</button>
57
+ <button type="button" id="ob-cancel">${o("botOnboarding.cancel")}</button>
58
+ <button type="submit" class="primary">${o("botOnboarding.startScan")}</button>
52
59
  </menu>
53
60
  </form>
54
- </article>`;let s=n.querySelector("#onboarding-form");n.querySelector("#ob-cancel")?.addEventListener("click",()=>n.close()),n.querySelector("#ob-cli")?.addEventListener("change",()=>K(e)),K(e),s?.addEventListener("submit",l=>{l.preventDefault();let k=n.querySelector("#ob-cli")?.value??"",se=n.querySelector("#ob-dir")?.value??"",le=n.querySelector("#ob-model")?.value??"";ge({cliId:k,workingDir:se,model:le},e)})}async function ge(e,t){h(),u({id:"",status:"starting"});try{let n=await fetch("/api/bot-onboarding/start",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({cliId:e.cliId,workingDir:e.workingDir.trim(),model:e.model.trim()||void 0})}),o=await n.json();if(n.status===400){M(t,o?.message??o?.error??"invalid_input");return}if(!n.ok||!o?.job?.id)throw new Error(o?.error??`http_${n.status}`);u(o.job),w=window.setInterval(()=>{fe(o.job.id).catch(a=>{h(),u({id:o.job.id,status:"failed",message:a instanceof Error?a.message:String(a)})})},1200)}catch(n){u({id:"",status:"failed",message:n instanceof Error?n.message:String(n)})}}async function fe(e){let t=await fetch(`/api/bot-onboarding/${encodeURIComponent(e)}`),n=await t.json();if(!t.ok||!n?.job)throw new Error(n?.error??`http_${t.status}`);u(n.job),(n.job.status==="completed"||n.job.status==="failed"||n.job.status==="needs_owner")&&h()}async function be(){h();let e=S();M([{id:"claude-code",label:"Claude"}]),e.open||e.showModal();let t=await me();e.open&&e.querySelector("#onboarding-form")&&M(t)}function W(){let e=document.getElementById("add-bot-btn");e&&(e.onclick=()=>{be()})}var he={monitor:'<rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/>',sun:'<circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m6.34 17.66-1.41 1.41"/><path d="m19.07 4.93-1.41 1.41"/>',moon:'<path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"/>',cpu:'<path d="M12 20v2"/><path d="M12 2v2"/><path d="M17 20v2"/><path d="M17 2v2"/><path d="M2 12h2"/><path d="M2 17h2"/><path d="M2 7h2"/><path d="M20 12h2"/><path d="M20 17h2"/><path d="M20 7h2"/><path d="M7 20v2"/><path d="M7 2v2"/><rect x="4" y="4" width="16" height="16" rx="2"/><rect x="8" y="8" width="8" height="8" rx="1"/>',sparkles:'<path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"/><path d="M20 2v4"/><path d="M22 4h-4"/><circle cx="4" cy="20" r="2"/>',zap:'<path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"/>',terminal:'<path d="M12 19h8"/><path d="m4 17 6-6-6-6"/>',keyRound:'<path d="M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z"/><circle cx="16.5" cy="7.5" r=".5" fill="currentColor"/>',network:'<rect x="16" y="16" width="6" height="6" rx="1"/><rect x="2" y="16" width="6" height="6" rx="1"/><rect x="9" y="2" width="6" height="6" rx="1"/><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"/><path d="M12 12V8"/>',swords:'<polyline points="14.5 17.5 3 6 3 3 6 3 17.5 14.5"/><line x1="13" x2="19" y1="19" y2="13"/><line x1="16" x2="20" y1="16" y2="20"/><line x1="19" x2="21" y1="21" y2="19"/><polyline points="14.5 6.5 18 3 21 3 21 6 17.5 9.5"/><line x1="5" x2="9" y1="14" y2="18"/><line x1="7" x2="4" y1="17" y2="20"/><line x1="3" x2="5" y1="19" y2="21"/>',flame:'<path d="M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4"/>',ball:'<path d="M11 7a16 16 20 0 1 10.98 4.362"/><path d="M12 12a13 13 0 0 1-8.66 5"/><path d="M16.83 13.634a16 16 0 0 1-9.267 7.328"/><path d="M20.66 17A13 13 0 0 0 12 12a13 13 0 0 1 0-10"/><path d="M8.17 15.366a16 16 0 0 1-1.713-11.69"/><circle cx="12" cy="12" r="10"/>',chevron:'<path d="m6 9 6 6 6-6"/>'},F=[{labelKey:"theme.base",options:[{value:"system",labelKey:"status.system",icon:"monitor"},{value:"light",labelKey:"status.light",icon:"sun"},{value:"dark",labelKey:"status.dark",icon:"moon"}]},{labelKey:"theme.skins",options:[{value:"cyber",labelKey:"skin.cyber",icon:"cpu"},{value:"genshin",labelKey:"skin.genshin",icon:"sparkles"},{value:"fallout",labelKey:"skin.fallout",icon:"zap"},{value:"prts",labelKey:"skin.prts",icon:"terminal"},{value:"bluearchive",labelKey:"skin.bluearchive",icon:"keyRound"},{value:"zzz",labelKey:"skin.zzz",icon:"network"},{value:"dragonball",labelKey:"skin.dragonball",icon:"flame"},{value:"ikun",labelKey:"skin.ikun",icon:"ball"}]}],J=F.flatMap(e=>e.options),f=!1;function L(e){return`<svg class="tm-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${he[e]??""}</svg>`}function ye(e){return e.replace(/[&<>"]/g,t=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[t])}function G(){let e=document.getElementById("theme-menu"),t=document.getElementById("theme-menu-btn"),n=document.getElementById("theme-menu-pop");if(!e||!t||!n)return;n.innerHTML=F.map(a=>`<div class="tm-group" data-label-key="${a.labelKey}"></div>`+a.options.map(s=>`<button type="button" class="tm-item" role="option" data-value="${s.value}"><span class="tm-ic">${L(s.icon)}</span><span class="tm-label" data-label-key="${s.labelKey}"></span></button>`).join("")).join("");let o=a=>{f=a,n.hidden=!f,t.setAttribute("aria-expanded",String(f)),e.classList.toggle("open",f)};t.addEventListener("click",a=>{a.stopPropagation(),o(!f)}),n.addEventListener("click",a=>{let s=a.target.closest(".tm-item");s&&(d.setTheme(s.dataset.value??"system"),o(!1))}),document.addEventListener("click",a=>{f&&!e.contains(a.target)&&o(!1)}),document.addEventListener("keydown",a=>{a.key==="Escape"&&f&&o(!1)}),$()}function $(){let e=document.getElementById("theme-menu-btn");if(!e)return;let t=J.find(n=>n.value===d.theme)??J[0];e.innerHTML=`<span class="tm-ic">${L(t.icon)}</span><span class="tm-current">${ye(r(t.labelKey))}</span><span class="tm-chev">${L("chevron")}</span>`,document.querySelectorAll("#theme-menu-pop [data-label-key]").forEach(n=>{n.textContent=r(n.dataset.labelKey??"")}),document.querySelectorAll("#theme-menu-pop .tm-item").forEach(n=>{n.classList.toggle("active",n.dataset.value===d.theme)})}var ve=[{id:"legacy-workflow",routePrefix:"#/legacy-workflow",load:async()=>{let e=await import("./chunks/workflows-UB7OPYGI.js");return t=>e.renderWorkflowsPage(t)}},{id:"workflows",routePrefix:"#/workflows",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/v3-page-FVPUL665.js");return t=>e.renderV3RunsPage(t)}},{id:"groups",routePrefix:"#/groups",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/groups-page-C54PVKYP.js");return t=>e.renderGroupsPage(t)}},{id:"settings",routePrefix:"#/settings",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/settings-page-OSBZNCXL.js");return t=>e.renderSettingsPage(t)}},{id:"bot-defaults",routePrefix:"#/bot-defaults",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/bot-defaults-page-3EV7K6LJ.js");return t=>e.renderBotDefaultsPage(t)}},{id:"skills",routePrefix:"#/skills",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/skills-page-Y3VUAOYG.js");return t=>e.renderSkillsPage(t)}},{id:"connectors",routePrefix:"#/connectors",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/connectors-XPZKEHF6.js");return t=>e.renderConnectorsPage(t)}},{id:"team-manage",routePrefix:"#/team/manage",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/team-federation-page-CRH3WZPH.js");return t=>e.renderTeamManagePage(t)}},{id:"team",routePrefix:"#/team",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/team-federation-page-CRH3WZPH.js");return t=>e.renderTeamFederationPage(t)}},{id:"roles-profile",routePrefix:"#/roles/profile",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/roles-page-APUDLPVM.js");return t=>e.renderRoleProfilesPage(t)}},{id:"roles",routePrefix:"#/roles",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/roles-page-APUDLPVM.js");return t=>e.renderRolesPage(t)}},{id:"schedules",routePrefix:"#/schedules",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/schedules-WG2UKHSO.js");return t=>e.renderSchedulesPage(t)}},{id:"whiteboards",routePrefix:"#/whiteboards",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/whiteboards-page-HLCTYSSV.js");return t=>e.renderWhiteboardsPage(t)}},{id:"sessions",routePrefix:"#/sessions",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/sessions-page-F3U5NFPD.js");return t=>e.renderSessionsPage(t)}},{id:"office",routePrefix:"#/office",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/office-page-6DXYOG55.js");return t=>e.renderOfficePage(t)}},{id:"insights",routePrefix:"#/insights",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/insights-page-BBQYR7WY.js");return t=>e.renderInsightsPage(t)}}];function Q(e){return ve.find(t=>t.exact?e===t.routePrefix:e.startsWith(t.routePrefix))}async function V(){let e=await import("./chunks/overview-page-5PJCAMID.js");return t=>e.renderOverviewPage(t)}function Y(){return{seq:0,pageDispose:null,rerenderOnUiChange:!0}}function Z(e){let t=++e.seq;return e.pageDispose&&(e.pageDispose(),e.pageDispose=null),t}function X(e,t){return t===e.seq}async function j(e,t,n,o,a={}){let s=await o();if(!X(e,t))return!1;let c=s(n);return X(e,t)?(e.pageDispose=typeof c=="function"?c:null,e.rerenderOnUiChange=a.rerenderOnUiChange??!0,!0):(typeof c=="function"&&c(),!1)}var E=document.getElementById("root"),b=!0,re=!1,ae=["roles","role-profiles","bot-defaults","skills","team","connectors","insights","whiteboards"],P=!1;function we(){if(P)return;P=!0;let e=document.createElement("div");e.id="auth-expired-overlay",e.style.cssText="position:fixed;inset:0;background:rgba(0,0,0,.65);display:flex;align-items:center;justify-content:center;z-index:9999",e.innerHTML='<div style="background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:12px;padding:36px 40px;max-width:460px;width:90vw;text-align:center;box-shadow:0 12px 40px rgba(0,0,0,.35)"><h2 style="margin:0 0 14px;font-size:19px;color:var(--fg)">\u8BBF\u95EE\u94FE\u63A5\u5DF2\u5931\u6548</h2><p style="margin:0 0 24px;line-height:1.7;color:var(--muted,#8f959e);font-size:14px">\u5F53\u524D\u94FE\u63A5/\u8BBF\u95EE\u5DF2\u5931\u6548\uFF0C\u8BF7\u4F7F\u7528\u6700\u65B0\u6388\u6743\u94FE\u63A5\u91CD\u65B0\u8FDB\u5165\uFF08\u8FD0\u884C botmux dashboard \u83B7\u53D6\uFF09\u3002</p><button id="auth-expired-dismiss" type="button" style="padding:8px 22px;background:var(--accent);color:var(--on-accent);border:none;border-radius:8px;cursor:pointer;font-size:14px">\u77E5\u9053\u4E86</button></div>',document.body.appendChild(e);let t=()=>{e.remove(),P=!1};e.querySelector("#auth-expired-dismiss")?.addEventListener("click",t),e.addEventListener("click",n=>{n.target===e&&t()})}var T;function xe(){let e=document.getElementById("readonly-toast");e||(e=document.createElement("div"),e.id="readonly-toast",e.style.cssText="position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:9999;background:var(--fg,#1f2329);color:var(--bg,#fff);padding:10px 18px;border-radius:8px;font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.25)",document.body.appendChild(e)),e.textContent="\u5F53\u524D\u662F\u53EA\u8BFB\u8BBF\u95EE\uFF0C\u6B64\u64CD\u4F5C\u9700\u8981\u6388\u6743\u94FE\u63A5\uFF08\u8FD0\u884C botmux dashboard \u83B7\u53D6\uFF09",e.style.display="block",T&&window.clearTimeout(T),T=window.setTimeout(()=>{e.style.display="none"},4e3)}var Oe=window.fetch.bind(window);window.fetch=async function(...t){let n=await Oe(...t);if(n.status===401){let o=(t[1]?.method??"GET").toUpperCase();(o==="GET"||o==="HEAD")&&!re?we():xe()}return n};var D="";function O(){let e=document.getElementById("attention-strip");if(!e)return;let t=[...g.sessions.values()].map(a=>({s:a,reason:z(a)})).filter(a=>!!a.reason).sort((a,s)=>v(a.s)-v(s.s));if(t.length===0){e.hidden=!0,e.innerHTML="",D="";return}let n=t[0],o=`
61
+ </article>`;let s=n.querySelector("#onboarding-form");n.querySelector("#ob-cancel")?.addEventListener("click",()=>n.close()),n.querySelector("#ob-cli")?.addEventListener("change",()=>W(e)),W(e);let u=n.querySelector("#ob-dir-mode"),L=()=>{let p=u?.value==="card"?"card":"fixed",w=n.querySelector("#ob-dir-label"),x=n.querySelector("#ob-dir");w&&(w.textContent=p==="card"?o("botOnboarding.dirLabelCard"):o("botOnboarding.dirLabelFixed")),x&&(x.placeholder=p==="card"?o("botOnboarding.dirPlaceholderCard"):o("botOnboarding.dirPlaceholderFixed"))};u?.addEventListener("change",L),s?.addEventListener("submit",p=>{p.preventDefault();let w=n.querySelector("#ob-cli")?.value??"",x=n.querySelector("#ob-dir")?.value??"",ce=n.querySelector("#ob-dir-mode")?.value==="card"?"card":"fixed",ue=n.querySelector("#ob-model")?.value??"";he({cliId:w,workingDir:x,dirMode:ce,model:ue},e)})}async function he(e,t){y(),c({id:"",status:"starting"});try{let n=await fetch("/api/bot-onboarding/start",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({cliId:e.cliId,workingDir:e.workingDir.trim(),dirMode:e.dirMode,model:e.model.trim()||void 0})}),r=await n.json();if(n.status===400){E(t,r?.message??r?.error??"invalid_input");return}if(!n.ok||!r?.job?.id)throw new Error(r?.error??`http_${n.status}`);c(r.job),M=window.setInterval(()=>{ye(r.job.id).catch(a=>{y(),c({id:r.job.id,status:"failed",message:a instanceof Error?a.message:String(a)})})},1200)}catch(n){c({id:"",status:"failed",message:n instanceof Error?n.message:String(n)})}}async function ye(e){let t=await fetch(`/api/bot-onboarding/${encodeURIComponent(e)}`),n=await t.json();if(!t.ok||!n?.job)throw new Error(n?.error??`http_${t.status}`);c(n.job),(n.job.status==="completed"||n.job.status==="failed"||n.job.status==="needs_owner")&&y()}async function ve(){y();let e=$();E([{id:"claude-code",label:"Claude"}]),e.open||e.showModal();let t=await be();e.open&&e.querySelector("#onboarding-form")&&E(t)}function G(){let e=document.getElementById("add-bot-btn");e&&(e.onclick=()=>{ve()})}var we={monitor:'<rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/>',sun:'<circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m6.34 17.66-1.41 1.41"/><path d="m19.07 4.93-1.41 1.41"/>',moon:'<path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"/>',cpu:'<path d="M12 20v2"/><path d="M12 2v2"/><path d="M17 20v2"/><path d="M17 2v2"/><path d="M2 12h2"/><path d="M2 17h2"/><path d="M2 7h2"/><path d="M20 12h2"/><path d="M20 17h2"/><path d="M20 7h2"/><path d="M7 20v2"/><path d="M7 2v2"/><rect x="4" y="4" width="16" height="16" rx="2"/><rect x="8" y="8" width="8" height="8" rx="1"/>',sparkles:'<path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"/><path d="M20 2v4"/><path d="M22 4h-4"/><circle cx="4" cy="20" r="2"/>',zap:'<path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"/>',terminal:'<path d="M12 19h8"/><path d="m4 17 6-6-6-6"/>',keyRound:'<path d="M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z"/><circle cx="16.5" cy="7.5" r=".5" fill="currentColor"/>',network:'<rect x="16" y="16" width="6" height="6" rx="1"/><rect x="2" y="16" width="6" height="6" rx="1"/><rect x="9" y="2" width="6" height="6" rx="1"/><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"/><path d="M12 12V8"/>',swords:'<polyline points="14.5 17.5 3 6 3 3 6 3 17.5 14.5"/><line x1="13" x2="19" y1="19" y2="13"/><line x1="16" x2="20" y1="16" y2="20"/><line x1="19" x2="21" y1="21" y2="19"/><polyline points="14.5 6.5 18 3 21 3 21 6 17.5 9.5"/><line x1="5" x2="9" y1="14" y2="18"/><line x1="7" x2="4" y1="17" y2="20"/><line x1="3" x2="5" y1="19" y2="21"/>',flame:'<path d="M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4"/>',ball:'<path d="M11 7a16 16 20 0 1 10.98 4.362"/><path d="M12 12a13 13 0 0 1-8.66 5"/><path d="M16.83 13.634a16 16 0 0 1-9.267 7.328"/><path d="M20.66 17A13 13 0 0 0 12 12a13 13 0 0 1 0-10"/><path d="M8.17 15.366a16 16 0 0 1-1.713-11.69"/><circle cx="12" cy="12" r="10"/>',chevron:'<path d="m6 9 6 6 6-6"/>'},V=[{labelKey:"theme.base",options:[{value:"system",labelKey:"status.system",icon:"monitor"},{value:"light",labelKey:"status.light",icon:"sun"},{value:"dark",labelKey:"status.dark",icon:"moon"}]},{labelKey:"theme.skins",options:[{value:"cyber",labelKey:"skin.cyber",icon:"cpu"},{value:"genshin",labelKey:"skin.genshin",icon:"sparkles"},{value:"fallout",labelKey:"skin.fallout",icon:"zap"},{value:"prts",labelKey:"skin.prts",icon:"terminal"},{value:"bluearchive",labelKey:"skin.bluearchive",icon:"keyRound"},{value:"zzz",labelKey:"skin.zzz",icon:"network"},{value:"dragonball",labelKey:"skin.dragonball",icon:"flame"},{value:"ikun",labelKey:"skin.ikun",icon:"ball"}]}],Q=V.flatMap(e=>e.options),b=!1;function T(e){return`<svg class="tm-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${we[e]??""}</svg>`}function xe(e){return e.replace(/[&<>"]/g,t=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[t])}function X(){let e=document.getElementById("theme-menu"),t=document.getElementById("theme-menu-btn"),n=document.getElementById("theme-menu-pop");if(!e||!t||!n)return;n.innerHTML=V.map(a=>`<div class="tm-group" data-label-key="${a.labelKey}"></div>`+a.options.map(s=>`<button type="button" class="tm-item" role="option" data-value="${s.value}"><span class="tm-ic">${T(s.icon)}</span><span class="tm-label" data-label-key="${s.labelKey}"></span></button>`).join("")).join("");let r=a=>{b=a,n.hidden=!b,t.setAttribute("aria-expanded",String(b)),e.classList.toggle("open",b)};t.addEventListener("click",a=>{a.stopPropagation(),r(!b)}),n.addEventListener("click",a=>{let s=a.target.closest(".tm-item");s&&(l.setTheme(s.dataset.value??"system"),r(!1))}),document.addEventListener("click",a=>{b&&!e.contains(a.target)&&r(!1)}),document.addEventListener("keydown",a=>{a.key==="Escape"&&b&&r(!1)}),P()}function P(){let e=document.getElementById("theme-menu-btn");if(!e)return;let t=Q.find(n=>n.value===l.theme)??Q[0];e.innerHTML=`<span class="tm-ic">${T(t.icon)}</span><span class="tm-current">${xe(o(t.labelKey))}</span><span class="tm-chev">${T("chevron")}</span>`,document.querySelectorAll("#theme-menu-pop [data-label-key]").forEach(n=>{n.textContent=o(n.dataset.labelKey??"")}),document.querySelectorAll("#theme-menu-pop .tm-item").forEach(n=>{n.classList.toggle("active",n.dataset.value===l.theme)})}var Oe=[{id:"legacy-workflow",routePrefix:"#/legacy-workflow",load:async()=>{let e=await import("./chunks/workflows-ZNBB5KFV.js");return t=>e.renderWorkflowsPage(t)}},{id:"workflows",routePrefix:"#/workflows",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/v3-page-FVPUL665.js");return t=>e.renderV3RunsPage(t)}},{id:"groups",routePrefix:"#/groups",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/groups-page-IKTCMQ4A.js");return t=>e.renderGroupsPage(t)}},{id:"settings",routePrefix:"#/settings",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/settings-page-WWTXB577.js");return t=>e.renderSettingsPage(t)}},{id:"bot-defaults",routePrefix:"#/bot-defaults",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/bot-defaults-page-HOGLABBC.js");return t=>e.renderBotDefaultsPage(t)}},{id:"skills",routePrefix:"#/skills",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/skills-page-2FAUPQ6H.js");return t=>e.renderSkillsPage(t)}},{id:"connectors",routePrefix:"#/connectors",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/connectors-UGTF4Q4I.js");return t=>e.renderConnectorsPage(t)}},{id:"team-manage",routePrefix:"#/team/manage",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/team-federation-page-PTBQQSFS.js");return t=>e.renderTeamManagePage(t)}},{id:"team",routePrefix:"#/team",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/team-federation-page-PTBQQSFS.js");return t=>e.renderTeamFederationPage(t)}},{id:"roles-profile",routePrefix:"#/roles/profile",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/roles-page-E2VN2DLV.js");return t=>e.renderRoleProfilesPage(t)}},{id:"roles",routePrefix:"#/roles",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/roles-page-E2VN2DLV.js");return t=>e.renderRolesPage(t)}},{id:"schedules",routePrefix:"#/schedules",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/schedules-6QIHJIHX.js");return t=>e.renderSchedulesPage(t)}},{id:"whiteboards",routePrefix:"#/whiteboards",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/whiteboards-page-HLCTYSSV.js");return t=>e.renderWhiteboardsPage(t)}},{id:"sessions",routePrefix:"#/sessions",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/sessions-page-QN2TARF2.js");return t=>e.renderSessionsPage(t)}},{id:"office",routePrefix:"#/office",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/office-page-6DXYOG55.js");return t=>e.renderOfficePage(t)}},{id:"insights",routePrefix:"#/insights",rerenderOnUiChange:!0,load:async()=>{let e=await import("./chunks/insights-page-7CCSHEKM.js");return t=>e.renderInsightsPage(t)}}];function Y(e){return Oe.find(t=>t.exact?e===t.routePrefix:e.startsWith(t.routePrefix))}async function Z(){let e=await import("./chunks/overview-page-JOJW65P5.js");return t=>e.renderOverviewPage(t)}function ee(){return{seq:0,pageDispose:null,rerenderOnUiChange:!0}}function te(e){let t=++e.seq;return e.pageDispose&&(e.pageDispose(),e.pageDispose=null),t}function j(e,t){return t===e.seq}async function ne(e,t,n,r,a={}){let s=await r();if(!j(e,t))return!1;let d=s(n);return j(e,t)?(e.pageDispose=typeof d=="function"?d:null,e.rerenderOnUiChange=a.rerenderOnUiChange??!0,!0):(typeof d=="function"&&d(),!1)}var D=document.getElementById("root"),h=!0,se=!1,le=["roles","role-profiles","bot-defaults","skills","team","connectors","insights","whiteboards"],C=!1;function Me(){if(C)return;C=!0;let e=document.createElement("div");e.id="auth-expired-overlay",e.style.cssText="position:fixed;inset:0;background:rgba(0,0,0,.65);display:flex;align-items:center;justify-content:center;z-index:9999",e.innerHTML='<div style="background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:12px;padding:36px 40px;max-width:460px;width:90vw;text-align:center;box-shadow:0 12px 40px rgba(0,0,0,.35)"><h2 style="margin:0 0 14px;font-size:19px;color:var(--fg)">\u8BBF\u95EE\u94FE\u63A5\u5DF2\u5931\u6548</h2><p style="margin:0 0 24px;line-height:1.7;color:var(--muted,#8f959e);font-size:14px">\u5F53\u524D\u94FE\u63A5/\u8BBF\u95EE\u5DF2\u5931\u6548\uFF0C\u8BF7\u4F7F\u7528\u6700\u65B0\u6388\u6743\u94FE\u63A5\u91CD\u65B0\u8FDB\u5165\uFF08\u8FD0\u884C botmux dashboard \u83B7\u53D6\uFF09\u3002</p><button id="auth-expired-dismiss" type="button" style="padding:8px 22px;background:var(--accent);color:var(--on-accent);border:none;border-radius:8px;cursor:pointer;font-size:14px">\u77E5\u9053\u4E86</button></div>',document.body.appendChild(e);let t=()=>{e.remove(),C=!1};e.querySelector("#auth-expired-dismiss")?.addEventListener("click",t),e.addEventListener("click",n=>{n.target===e&&t()})}var H;function ke(){let e=document.getElementById("readonly-toast");e||(e=document.createElement("div"),e.id="readonly-toast",e.style.cssText="position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:9999;background:var(--fg,#1f2329);color:var(--bg,#fff);padding:10px 18px;border-radius:8px;font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.25)",document.body.appendChild(e)),e.textContent="\u5F53\u524D\u662F\u53EA\u8BFB\u8BBF\u95EE\uFF0C\u6B64\u64CD\u4F5C\u9700\u8981\u6388\u6743\u94FE\u63A5\uFF08\u8FD0\u884C botmux dashboard \u83B7\u53D6\uFF09",e.style.display="block",H&&window.clearTimeout(H),H=window.setTimeout(()=>{e.style.display="none"},4e3)}var Se=window.fetch.bind(window);window.fetch=async function(...t){let n=await Se(...t);if(n.status===401){let r=(t[1]?.method??"GET").toUpperCase();(r==="GET"||r==="HEAD")&&!se?Me():ke()}return n};var R="";function S(){let e=document.getElementById("attention-strip");if(!e)return;let t=[...f.sessions.values()].map(a=>({s:a,reason:N(a)})).filter(a=>!!a.reason).sort((a,s)=>O(a.s)-O(s.s));if(t.length===0){e.hidden=!0,e.innerHTML="",R="";return}let n=t[0],r=`
55
62
  <span class="attention-strip-ic" aria-hidden="true">!</span>
56
- <b>${i(r("strip.pending",{count:t.length}))}</b>
57
- <span class="attention-strip-longest">${i(r("strip.longest",{time:I(v(n.s)),bot:B(n.s),reason:n.reason}))}</span>
58
- <a class="attention-strip-go" href="#/sessions">${i(r("strip.handle"))}</a>`;e.hidden=!1,o!==D&&(D=o,e.innerHTML=o)}g.on(O);_().then(O);async function ke(){try{let e=await fetch("/api/settings");if(e.ok){let t=await e.json();b=!!t.authed,d.authed=b,re=!!(t.settings&&t.settings.publicReadOnly);let n=U(t.lang);n&&d.setLocale(n)}}catch{}}async function Me(e){if(b)try{await fetch("/api/settings",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({lang:e})})}catch{}}function Se(){for(let t of ae){let n=document.querySelector(`.sidebar-nav a[data-route="${t}"]`);n&&(n.style.display=b?"":"none")}let e=document.getElementById("add-bot-btn");e&&(e.style.display=b?"":"none")}async function Le(){if(b)try{let e=await fetch("/api/update/status");if(!e.ok)return;let t=await e.json(),n=document.querySelector('.sidebar-nav a[data-route="settings"]');if(!n)return;let o=t.behind===!0;n.classList.toggle("nav-has-update",o),o?n.title=r("update.navBadgeTitle",{version:`v${t.latest}`}):n.removeAttribute("title")}catch{}}function $e(e){e.innerHTML='<section class="auth-required" style="max-width:520px;margin:64px auto;text-align:center;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:14px;padding:40px 36px;box-shadow:0 8px 28px rgba(0,0,0,.12)"><h2 style="margin:0 0 12px;font-size:20px;color:var(--fg)">\u6B64\u9875\u9700\u8981\u6388\u6743\u94FE\u63A5</h2><p style="margin:0 0 24px;line-height:1.7;color:var(--muted);font-size:14px">\u4F60\u5F53\u524D\u662F\u53EA\u8BFB\u8BBF\u95EE\uFF0C\u7BA1\u7406\u9875\uFF08\u7FA4\u89D2\u8272 / Profiles / Bot \u914D\u7F6E / \u56E2\u961F / Webhook\uFF09\u9700\u8981\u6388\u6743\u94FE\u63A5\u3002\u8FD0\u884C <code>botmux dashboard</code> \u83B7\u53D6\u6700\u65B0\u94FE\u63A5\u540E\u5373\u53EF\u7BA1\u7406\u3002</p><a href="#/" style="display:inline-block;padding:8px 22px;background:var(--accent);color:var(--on-accent);border-radius:8px;text-decoration:none;font-size:14px">\u8FD4\u56DE\u603B\u89C8</a></section>'}var m=Y();function ee(e){for(let t of document.querySelectorAll(".sidebar-nav a")){let n=t.getAttribute("href")??"#/",o=e||"#/",a=n===o||n!=="#/"&&(o.startsWith(`${n}?`)||o.startsWith(`${n}/`));t.classList.toggle("active",a)}}async function C(){let e=Z(m),t=location.hash||"#/";if(!b&&ae.some(n=>t.startsWith("#/"+n))){$e(E),m.rerenderOnUiChange=!0,ee(t);return}if(t.startsWith("#/v3")){window.location.replace(`#/workflows${t.slice(4)}`);return}else if(/^#\/workflows(?:\/|-)catalog(?:[/?].*)?$/.test(t)){window.location.replace("#/workflows");return}if(t.startsWith("#/role-profiles")){window.location.replace(`#/roles/profile${t.slice(15)}`);return}try{let n=Q(t);await j(m,e,E,n?n.load:V,{rerenderOnUiChange:n?n.rerenderOnUiChange:!1})}catch(n){if(e!==m.seq)return;E.innerHTML=`<section class="page"><div class="empty">Dashboard route failed: ${i(String(n))}</div></section>`,m.pageDispose=null,m.rerenderOnUiChange=!0}finally{e===m.seq&&ee(t)}}var R=document.getElementById("status");function ie(){R&&(R.textContent=g.online?r("status.live"):r("status.disconnected"),R.className="connection-status "+(g.online?"online":"offline"))}g.on(ie);function te(){document.querySelectorAll("[data-i18n]").forEach(e=>{e.textContent=r(e.dataset.i18n??"")}),document.querySelectorAll("[data-locale]").forEach(e=>{e.classList.toggle("active",e.dataset.locale===d.locale)}),$(),ie()}function Ee(){document.querySelectorAll("[data-locale]").forEach(e=>{e.onclick=()=>{let t=e.dataset.locale;d.setLocale(t),Me(t)}}),G(),Te()}var ne="botmux.ownerAvatar.v1";function oe(e,t){let n=document.querySelector(".brand-mark");!n||!e||(n.innerHTML=`<img class="brand-owner-img" src="${i(e)}" alt="" decoding="async" referrerpolicy="no-referrer" onerror="this.remove()">`,t&&(n.title=t))}function Pe(){try{let e=JSON.parse(window.localStorage.getItem(ne)??"null");e?.avatarUrl&&oe(String(e.avatarUrl),e.name?String(e.name):void 0)}catch{}fetch("/api/owner-profile").then(e=>e.ok?e.json():null).then(e=>{if(!(!e?.ok||!e.avatarUrl)){oe(String(e.avatarUrl),e.name?String(e.name):void 0);try{window.localStorage.setItem(ne,JSON.stringify({avatarUrl:e.avatarUrl,name:e.name??""}))}catch{}}}).catch(()=>{})}function Te(){let e=document.getElementById("sidebar-toggle");if(!e)return;let t=q(window.localStorage),n=()=>{document.documentElement.dataset.sidebar=t,e.title=r(t==="collapsed"?"nav.sidebarExpand":"nav.sidebarCollapse")};n(),e.addEventListener("click",()=>{t=t==="collapsed"?"expanded":"collapsed",A(window.localStorage,t),n()})}(async()=>{d.init(),Ee(),W(),d.on(()=>{te(),O(),m.rerenderOnUiChange&&C()}),te(),O(),await ke(),Se(),Le(),Pe();try{await H()}catch(e){console.error("botmux dashboard bootstrap failed",e),g.setOnline(!1)}window.addEventListener("hashchange",()=>{C()}),C()})();export{we as showAuthExpiredOverlay,xe as showReadOnlyToast};
63
+ <b>${i(o("strip.pending",{count:t.length}))}</b>
64
+ <span class="attention-strip-longest">${i(o("strip.longest",{time:z(O(n.s)),bot:F(n.s),reason:n.reason}))}</span>
65
+ <a class="attention-strip-go" href="#/sessions">${i(o("strip.handle"))}</a>`;e.hidden=!1,r!==R&&(R=r,e.innerHTML=r)}f.on(S);K().then(S);async function Le(){try{let e=await fetch("/api/settings");if(e.ok){let t=await e.json();h=!!t.authed,l.authed=h,se=!!(t.settings&&t.settings.publicReadOnly);let n=A(t.lang);n&&l.setLocale(n)}}catch{}}async function Ee(e){if(h)try{await fetch("/api/settings",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({lang:e})})}catch{}}function $e(){for(let t of le){let n=document.querySelector(`.sidebar-nav a[data-route="${t}"]`);n&&(n.style.display=h?"":"none")}let e=document.getElementById("add-bot-btn");e&&(e.style.display=h?"":"none")}async function Te(){if(h)try{let e=await fetch("/api/update/status");if(!e.ok)return;let t=await e.json(),n=document.querySelector('.sidebar-nav a[data-route="settings"]');if(!n)return;let r=t.behind===!0;n.classList.toggle("nav-has-update",r),r?n.title=o("update.navBadgeTitle",{version:`v${t.latest}`}):n.removeAttribute("title")}catch{}}function Pe(e){e.innerHTML='<section class="auth-required" style="max-width:520px;margin:64px auto;text-align:center;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:14px;padding:40px 36px;box-shadow:0 8px 28px rgba(0,0,0,.12)"><h2 style="margin:0 0 12px;font-size:20px;color:var(--fg)">\u6B64\u9875\u9700\u8981\u6388\u6743\u94FE\u63A5</h2><p style="margin:0 0 24px;line-height:1.7;color:var(--muted);font-size:14px">\u4F60\u5F53\u524D\u662F\u53EA\u8BFB\u8BBF\u95EE\uFF0C\u7BA1\u7406\u9875\uFF08\u7FA4\u89D2\u8272 / Profiles / Bot \u914D\u7F6E / \u56E2\u961F / Webhook\uFF09\u9700\u8981\u6388\u6743\u94FE\u63A5\u3002\u8FD0\u884C <code>botmux dashboard</code> \u83B7\u53D6\u6700\u65B0\u94FE\u63A5\u540E\u5373\u53EF\u7BA1\u7406\u3002</p><a href="#/" style="display:inline-block;padding:8px 22px;background:var(--accent);color:var(--on-accent);border-radius:8px;text-decoration:none;font-size:14px">\u8FD4\u56DE\u603B\u89C8</a></section>'}var g=ee();function oe(e){for(let t of document.querySelectorAll(".sidebar-nav a")){let n=t.getAttribute("href")??"#/",r=e||"#/",a=n===r||n!=="#/"&&(r.startsWith(`${n}?`)||r.startsWith(`${n}/`));t.classList.toggle("active",a)}}async function q(){let e=te(g),t=location.hash||"#/";if(!h&&le.some(n=>t.startsWith("#/"+n))){Pe(D),g.rerenderOnUiChange=!0,oe(t);return}if(t.startsWith("#/v3")){window.location.replace(`#/workflows${t.slice(4)}`);return}else if(/^#\/workflows(?:\/|-)catalog(?:[/?].*)?$/.test(t)){window.location.replace("#/workflows");return}if(t.startsWith("#/role-profiles")){window.location.replace(`#/roles/profile${t.slice(15)}`);return}try{let n=Y(t);await ne(g,e,D,n?n.load:Z,{rerenderOnUiChange:n?n.rerenderOnUiChange:!1})}catch(n){if(e!==g.seq)return;D.innerHTML=`<section class="page"><div class="empty">Dashboard route failed: ${i(String(n))}</div></section>`,g.pageDispose=null,g.rerenderOnUiChange=!0}finally{e===g.seq&&oe(t)}}var U=document.getElementById("status");function de(){U&&(U.textContent=f.online?o("status.live"):o("status.disconnected"),U.className="connection-status "+(f.online?"online":"offline"))}f.on(de);function re(){document.querySelectorAll("[data-i18n]").forEach(e=>{e.textContent=o(e.dataset.i18n??"")}),document.querySelectorAll("[data-locale]").forEach(e=>{e.classList.toggle("active",e.dataset.locale===l.locale)}),P(),de()}function De(){document.querySelectorAll("[data-locale]").forEach(e=>{e.onclick=()=>{let t=e.dataset.locale;l.setLocale(t),Ee(t)}}),X(),He()}var ae="botmux.ownerAvatar.v1";function ie(e,t){let n=document.querySelector(".brand-mark");!n||!e||(n.innerHTML=`<img class="brand-owner-img" src="${i(e)}" alt="" decoding="async" referrerpolicy="no-referrer" onerror="this.remove()">`,t&&(n.title=t))}function Ce(){try{let e=JSON.parse(window.localStorage.getItem(ae)??"null");e?.avatarUrl&&ie(String(e.avatarUrl),e.name?String(e.name):void 0)}catch{}fetch("/api/owner-profile").then(e=>e.ok?e.json():null).then(e=>{if(!(!e?.ok||!e.avatarUrl)){ie(String(e.avatarUrl),e.name?String(e.name):void 0);try{window.localStorage.setItem(ae,JSON.stringify({avatarUrl:e.avatarUrl,name:e.name??""}))}catch{}}}).catch(()=>{})}function He(){let e=document.getElementById("sidebar-toggle");if(!e)return;let t=_(window.localStorage),n=()=>{document.documentElement.dataset.sidebar=t,e.title=o(t==="collapsed"?"nav.sidebarExpand":"nav.sidebarCollapse")};n(),e.addEventListener("click",()=>{t=t==="collapsed"?"expanded":"collapsed",B(window.localStorage,t),n()})}(async()=>{l.init(),De(),G(),l.on(()=>{re(),S(),g.rerenderOnUiChange&&q()}),re(),S(),await Le(),$e(),Te(),Ce();try{await I()}catch(e){console.error("botmux dashboard bootstrap failed",e),f.setOnline(!1)}window.addEventListener("hashchange",()=>{q()}),q()})();export{Me as showAuthExpiredOverlay,ke as showReadOnlyToast};
@@ -1,4 +1,4 @@
1
- import{b as ie}from"./chunk-NASYW5FD.js";import{a as ne}from"./chunk-76J7PNZI.js";import{m as e,n as r,p as vt,r as se,w as St}from"./chunk-JXLHRRJD.js";import{a as Oe,b as oe,c as le}from"./chunk-JTSE5VP6.js";import{c as Nt}from"./chunk-7SZRL6FY.js";var Mt=Nt(Oe(),1);var S={bots:[]},V=null,Gt=[{id:"claude-code",label:"Claude"},{id:"codex",label:"Codex"},{id:"traex",label:"traex"}],re=!1,$t="glm-5.1",jt=[],K=null;function Ot(d,u){return typeof d?.cliId=="string"&&d.cliId?d.cliId:u}var z=new Map;function ce(d){let u=null;for(let m of ne.sessions.values())m.larkAppId!==d||!m.cliId||(!u||Number(m.lastMessageAt??0)>Number(u.lastMessageAt??0))&&(u=m);return u?.cliId??""}async function de(){if(!re){re=!0;try{let d=await fetch("/api/cli-options"),u=await d.json().catch(()=>({}));d.ok&&Array.isArray(u?.options)&&(Gt=u.options.filter(m=>m&&typeof m.id=="string"&&typeof m.label=="string"),typeof u.ttadkModelDefault=="string"&&u.ttadkModelDefault.trim()&&($t=u.ttadkModelDefault.trim()),Array.isArray(u.ttadkModelSuggestions)&&(jt=u.ttadkModelSuggestions.filter(m=>typeof m=="string")))}catch{}}}function Ge(d,u){let m=typeof d?.agentSelectionKey=="string"&&d.agentSelectionKey?d.agentSelectionKey:"";return m||Ot(d,u)||"claude-code"}function Lt(d){return Gt.find(u=>u.id===d)}function je(d){return d?.gateway==="ttadk"&&d.acceptsModel!==!1?jt:[]}function Je(d,u){let m=Ge(d,u),j=Gt.map(H=>`<option value="${r(H.id)}" ${H.id===m?"selected":""}>${r(H.label)}\uFF08${r(H.id)}\uFF09</option>`).join(""),J=typeof d?.model=="string"?d.model:"",X=je(Lt(m)),at=Lt(m)?.gateway==="ttadk"&&Lt(m)?.acceptsModel===!1;return`<section class="bd-section">
1
+ import{b as ie}from"./chunk-ECXPBQ3J.js";import{a as ne}from"./chunk-76J7PNZI.js";import{m as e,n as r,p as vt,r as se,w as St}from"./chunk-MR57RUVP.js";import{a as Oe,b as oe,c as le}from"./chunk-JTSE5VP6.js";import{c as Nt}from"./chunk-7SZRL6FY.js";var Mt=Nt(Oe(),1);var S={bots:[]},V=null,Gt=[{id:"claude-code",label:"Claude"},{id:"codex",label:"Codex"},{id:"traex",label:"traex"}],re=!1,$t="glm-5.1",jt=[],K=null;function Ot(d,u){return typeof d?.cliId=="string"&&d.cliId?d.cliId:u}var z=new Map;function ce(d){let u=null;for(let m of ne.sessions.values())m.larkAppId!==d||!m.cliId||(!u||Number(m.lastMessageAt??0)>Number(u.lastMessageAt??0))&&(u=m);return u?.cliId??""}async function de(){if(!re){re=!0;try{let d=await fetch("/api/cli-options"),u=await d.json().catch(()=>({}));d.ok&&Array.isArray(u?.options)&&(Gt=u.options.filter(m=>m&&typeof m.id=="string"&&typeof m.label=="string"),typeof u.ttadkModelDefault=="string"&&u.ttadkModelDefault.trim()&&($t=u.ttadkModelDefault.trim()),Array.isArray(u.ttadkModelSuggestions)&&(jt=u.ttadkModelSuggestions.filter(m=>typeof m=="string")))}catch{}}}function Ge(d,u){let m=typeof d?.agentSelectionKey=="string"&&d.agentSelectionKey?d.agentSelectionKey:"";return m||Ot(d,u)||"claude-code"}function Lt(d){return Gt.find(u=>u.id===d)}function je(d){return d?.gateway==="ttadk"&&d.acceptsModel!==!1?jt:[]}function Je(d,u){let m=Ge(d,u),j=Gt.map(H=>`<option value="${r(H.id)}" ${H.id===m?"selected":""}>${r(H.label)}\uFF08${r(H.id)}\uFF09</option>`).join(""),J=typeof d?.model=="string"?d.model:"",X=je(Lt(m)),at=Lt(m)?.gateway==="ttadk"&&Lt(m)?.acceptsModel===!1;return`<section class="bd-section">
2
2
  <h3 class="bd-section-title">${e("botDefaults.sectionAgent")}</h3>
3
3
  <div class="bd-row">
4
4
  <label>
@@ -1 +1 @@
1
- import{a as n}from"./chunk-76J7PNZI.js";import{l as s,m as i}from"./chunk-JXLHRRJD.js";import{a as l}from"./chunk-JTSE5VP6.js";import{c as S}from"./chunk-7SZRL6FY.js";var e=S(l(),1);function f(o){return n.on(o)}function m(o){let u=(0,e.useRef)(o),r=(0,e.useRef)(null);u.current=o;let a=()=>{let t=n.getSnapshot();if(r.current&&r.current.version===t.version)return r.current.value;let c=u.current(t);return r.current={version:t.version,value:c},c};return(0,e.useSyncExternalStore)(f,a,a)}function h(o){return s.on(o)}function p(){return s.locale}function v(){return(0,e.useSyncExternalStore)(h,p,p)}function T(){return v(),i}export{m as a,T as b};
1
+ import{a as n}from"./chunk-76J7PNZI.js";import{l as s,m as i}from"./chunk-MR57RUVP.js";import{a as l}from"./chunk-JTSE5VP6.js";import{c as S}from"./chunk-7SZRL6FY.js";var e=S(l(),1);function f(o){return n.on(o)}function m(o){let u=(0,e.useRef)(o),r=(0,e.useRef)(null);u.current=o;let a=()=>{let t=n.getSnapshot();if(r.current&&r.current.version===t.version)return r.current.value;let c=u.current(t);return r.current={version:t.version,value:c},c};return(0,e.useSyncExternalStore)(f,a,a)}function h(o){return s.on(o)}function p(){return s.locale}function v(){return(0,e.useSyncExternalStore)(h,p,p)}function T(){return v(),i}export{m as a,T as b};