@xopcai/xopc 0.0.376 → 0.0.377

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/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{activity-store-CvR3rjdp.js → activity-store-BVtU6S1w.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-B6OsxiBw.js → agent-avatar-dicebear-BD63ce58.js} +1 -1
  5. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-MB_QmjX-.js → agent-defaults-settings-panel-Ch07F4uX.js} +1 -1
  6. package/dist/gateway/static/root/assets/{agent-plugin-dialog-Bpcf0zhP.js → agent-plugin-dialog-CdCVOg5e.js} +1 -1
  7. package/dist/gateway/static/root/assets/{agents-BQ7ag_R3.js → agents-D2__mhy8.js} +3 -3
  8. package/dist/gateway/static/root/assets/{agents-admin-api-DsXvJeqd.js → agents-admin-api-DgQph1Pu.js} +1 -1
  9. package/dist/gateway/static/root/assets/{app-management-settings-panel-9JzhRHSD.js → app-management-settings-panel-B0yP8rNC.js} +1 -1
  10. package/dist/gateway/static/root/assets/{appearance-settings-CoyZuGAt.js → appearance-settings-Bnq1nzDX.js} +1 -1
  11. package/dist/gateway/static/root/assets/{apps-page-CcbCxZaw.js → apps-page-CSIFuEnj.js} +1 -1
  12. package/dist/gateway/static/root/assets/{archive-plugin-kfDRSd7K.js → archive-plugin-FBVMH4ym.js} +1 -1
  13. package/dist/gateway/static/root/assets/{automations-page-DZJKbmlm.js → automations-page-qsg6pZlF.js} +1 -1
  14. package/dist/gateway/static/root/assets/{automations-workspace-ChKT1JN6.js → automations-workspace-DqBWLl61.js} +1 -1
  15. package/dist/gateway/static/root/assets/{binary-plugins-d4QP_iyy.js → binary-plugins-B0qGhVNs.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-DraiSml9.js → block-editor-CjQv4zlo.js} +1 -1
  17. package/dist/gateway/static/root/assets/{browser-automation-inputs-BAiaU9gl.js → browser-automation-inputs-DSbRHrG7.js} +1 -1
  18. package/dist/gateway/static/root/assets/{browser-automations-page-Bo40qRor.js → browser-automations-page-CzEWM_ie.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-settings-page-Dg4S7ph5.js → browser-settings-page-CsDck88G.js} +1 -1
  20. package/dist/gateway/static/root/assets/{capabilities-B-vsqiw2.js → capabilities-HaRLmYU1.js} +1 -1
  21. package/dist/gateway/static/root/assets/{capabilities-DQEeiNq_.js → capabilities-LpGa-olH.js} +1 -1
  22. package/dist/gateway/static/root/assets/{capabilities-page-CuHSjBDG.js → capabilities-page-BeQ-Yj3_.js} +2 -2
  23. package/dist/gateway/static/root/assets/{capabilities-settings-panel-bxxADxzW.js → capabilities-settings-panel-BQ-I3L-C.js} +1 -1
  24. package/dist/gateway/static/root/assets/{capability-header-actions-CaH0L2sV.js → capability-header-actions-DuBac0EK.js} +1 -1
  25. package/dist/gateway/static/root/assets/{channels-Drx78hEY.js → channels-1wUJcCxP.js} +1 -1
  26. package/dist/gateway/static/root/assets/{chat-terminal-dock-hZnKhClF.js → chat-terminal-dock-CQc1mqZM.js} +1 -1
  27. package/dist/gateway/static/root/assets/{computer-settings-page-CYEA9B-G.js → computer-settings-page-BIwOemaK.js} +1 -1
  28. package/dist/gateway/static/root/assets/{connector-service-page-DXi2Bx2u.js → connector-service-page-CG9KKuXq.js} +1 -1
  29. package/dist/gateway/static/root/assets/{connectors-page-BCWPY5hs.js → connectors-page-BFzjGpKE.js} +1 -1
  30. package/dist/gateway/static/root/assets/{date-picker-BW_xBw2L.js → date-picker-DoZGE2hF.js} +1 -1
  31. package/dist/gateway/static/root/assets/{dependency-picker-ByRPupfC.js → dependency-picker-hrz7p1Lv.js} +1 -1
  32. package/dist/gateway/static/root/assets/{desktop-pet-DTcVMPlC.js → desktop-pet-C1bTu_dG.js} +1 -1
  33. package/dist/gateway/static/root/assets/{desktop-pet-settings-BkMP5pdR.js → desktop-pet-settings-C2xCFimg.js} +1 -1
  34. package/dist/gateway/static/root/assets/{device-pairing-wizard-5kYuK9oW.js → device-pairing-wizard-CZ5Wmq5U.js} +1 -1
  35. package/dist/gateway/static/root/assets/{directory-picker-path-field-DIYIejyX.js → directory-picker-path-field-BaHQhI4z.js} +1 -1
  36. package/dist/gateway/static/root/assets/{extension-debug-page-QCUvXcP2.js → extension-debug-page-B1uMVNGe.js} +1 -1
  37. package/dist/gateway/static/root/assets/{extension-page-BMeQveJ_.js → extension-page-850m5tOc.js} +1 -1
  38. package/dist/gateway/static/root/assets/{extension-provider-CDOEBj7F.js → extension-provider-B-_CkaD2.js} +1 -1
  39. package/dist/gateway/static/root/assets/{extension-settings-page-D-M7P4HQ.js → extension-settings-page-P3FNAW0n.js} +1 -1
  40. package/dist/gateway/static/root/assets/{fallback-models-5DaUVrLS.js → fallback-models-BoJZA9Cm.js} +1 -1
  41. package/dist/gateway/static/root/assets/{gateway-config-swr-CWIVt5XM.js → gateway-config-swr-siY2J0hx.js} +1 -1
  42. package/dist/gateway/static/root/assets/{gateway-realtime-DC8N3fNU.js → gateway-realtime-Biz18NiE.js} +1 -1
  43. package/dist/gateway/static/root/assets/gateway-realtime-store-BazlseY_.js +1 -0
  44. package/dist/gateway/static/root/assets/{gateway-settings-DK2NzPkL.js → gateway-settings-BG1zXG8B.js} +1 -1
  45. package/dist/gateway/static/root/assets/{gateway-startup-retry-pVqdX0dO.js → gateway-startup-retry-CeL1OFDZ.js} +1 -1
  46. package/dist/gateway/static/root/assets/{home-page-A3oTV3Vq.js → home-page-B8RmZbDw.js} +1 -1
  47. package/dist/gateway/static/root/assets/{image-generation-api-CX6__We2.js → image-generation-api-CeDrok06.js} +1 -1
  48. package/dist/gateway/static/root/assets/{imports-page-b0ILSTz1.js → imports-page-C9FTl2dW.js} +1 -1
  49. package/dist/gateway/static/root/assets/index-CGVecvp4.css +1 -0
  50. package/dist/gateway/static/root/assets/{index-Cz75qf5b.js → index-DU5FmDQh.js} +28 -28
  51. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DGl7wSHG.js → keyboard-shortcuts-settings-Dx-36I-c.js} +1 -1
  52. package/dist/gateway/static/root/assets/{local-app-workbench-page--W2QjBqz.js → local-app-workbench-page-Cg4gdTwm.js} +1 -1
  53. package/dist/gateway/static/root/assets/{local-apps-page-8SQ85WLr.js → local-apps-page-3GKgu7at.js} +1 -1
  54. package/dist/gateway/static/root/assets/{local-session-drafts-LCEmswHW.js → local-session-drafts-DnSw14fE.js} +1 -1
  55. package/dist/gateway/static/root/assets/{locale-store-UEl-U1DO.js → locale-store-DSsLH7JO.js} +1 -1
  56. package/dist/gateway/static/root/assets/{logs-page-BAQeHGd4.js → logs-page-CApZnDPi.js} +1 -1
  57. package/dist/gateway/static/root/assets/{management-settings-DoXDsSSN.js → management-settings-DcgCzPd-.js} +1 -1
  58. package/dist/gateway/static/root/assets/{markdown-view-DUo9Tl3H.js → markdown-view-2rwSrMXW.js} +1 -1
  59. package/dist/gateway/static/root/assets/{media-plugins-8zr2wlMR.js → media-plugins-CjGiKLFo.js} +1 -1
  60. package/dist/gateway/static/root/assets/messages-Cn25s55n.js +3 -0
  61. package/dist/gateway/static/root/assets/models-hub-cache-DaqiLHPe.js +1 -0
  62. package/dist/gateway/static/root/assets/{note-detail-panel-Cg65uYJ3.js → note-detail-panel-CncL3xmy.js} +3 -3
  63. package/dist/gateway/static/root/assets/{notes-api-bDQOslzF.js → notes-api-D9fGUbkK.js} +1 -1
  64. package/dist/gateway/static/root/assets/{notes-page-DDUlWJOk.js → notes-page-D9romxNU.js} +1 -1
  65. package/dist/gateway/static/root/assets/{page-context-capture-button-o-i2_7Jz.js → page-context-capture-button-CKqYL9AQ.js} +1 -1
  66. package/dist/gateway/static/root/assets/{personal-page-E9-LBR1_.js → personal-page-DoG-2fru.js} +1 -1
  67. package/dist/gateway/static/root/assets/{product-open-page-DWgjStlK.js → product-open-page-DFu_ZT2h.js} +1 -1
  68. package/dist/gateway/static/root/assets/{product-preview-content-BWQRI242.js → product-preview-content-tPBCFa7L.js} +1 -1
  69. package/dist/gateway/static/root/assets/{project-detail-page-FjGobz6n.js → project-detail-page-C9Bt5toA.js} +1 -1
  70. package/dist/gateway/static/root/assets/{projects-page-CVhXJp7f.js → projects-page-Bu3jZa3A.js} +1 -1
  71. package/dist/gateway/static/root/assets/{registry-api-CftkuRz7.js → registry-api-ZhIt79wL.js} +1 -1
  72. package/dist/gateway/static/root/assets/{remote-access-hub-B2AcKWlb.js → remote-access-hub-C9MNGl2t.js} +1 -1
  73. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DmOfq9ay.js → runtime-tools-settings-panel-BYQuPsWk.js} +1 -1
  74. package/dist/gateway/static/root/assets/{scenes-page-QQ2CiTee.js → scenes-page-7LjR8Aek.js} +1 -1
  75. package/dist/gateway/static/root/assets/{schema-form-TbUx_9NF.js → schema-form-GwVc8KsT.js} +1 -1
  76. package/dist/gateway/static/root/assets/{send-session-input-D4c72mD6.js → send-session-input-B64q4_6R.js} +1 -1
  77. package/dist/gateway/static/root/assets/{session-api-DtpzfFNw.js → session-api-BUa3BaGX.js} +1 -1
  78. package/dist/gateway/static/root/assets/session-manager-BWLIDok4.js +16 -0
  79. package/dist/gateway/static/root/assets/{sessions-page-CquSXQHo.js → sessions-page-CzbNB_RT.js} +1 -1
  80. package/dist/gateway/static/root/assets/settings-advanced-gate-CmNe5RJ4.js +1 -0
  81. package/dist/gateway/static/root/assets/{settings-page-NncRVc1e.js → settings-page-DAvi3P8Q.js} +1 -1
  82. package/dist/gateway/static/root/assets/{setup-status-panel-t1vcGUsK.js → setup-status-panel-DoAn6P_k.js} +1 -1
  83. package/dist/gateway/static/root/assets/{share-link-dialog-DGUiTTZ3.js → share-link-dialog-CbkS1cj-.js} +1 -1
  84. package/dist/gateway/static/root/assets/{share-preview-page-BDl6XGKm.js → share-preview-page-DicRCB4L.js} +1 -1
  85. package/dist/gateway/static/root/assets/{shares-api-BIx5ji2U.js → shares-api-BUGeqXCG.js} +1 -1
  86. package/dist/gateway/static/root/assets/{shares-settings-DVM6xJuW.js → shares-settings-Bbkz0xuD.js} +1 -1
  87. package/dist/gateway/static/root/assets/{skill-api-Crld1PEV.js → skill-api-DpTUuYWk.js} +1 -1
  88. package/dist/gateway/static/root/assets/{skill-reload-api-D2HAboLP.js → skill-reload-api-CII18PA5.js} +1 -1
  89. package/dist/gateway/static/root/assets/{skills-page-DdD6C_Z8.js → skills-page-BuBSAOOd.js} +1 -1
  90. package/dist/gateway/static/root/assets/{system-settings-panel-DUro5X0b.js → system-settings-panel-DlNaQp-l.js} +1 -1
  91. package/dist/gateway/static/root/assets/{task-detail-page-BYNcWubZ.js → task-detail-page-DeElbs6T.js} +1 -1
  92. package/dist/gateway/static/root/assets/{task-expandable-content-BKa2YEJy.js → task-expandable-content-sONbgbwR.js} +1 -1
  93. package/dist/gateway/static/root/assets/{theme-store-ByAapAD7.js → theme-store-Kz0VUMSb.js} +1 -1
  94. package/dist/gateway/static/root/assets/{tracing-settings-page-Dv-XBvpD.js → tracing-settings-page-CZHhm1Nn.js} +1 -1
  95. package/dist/gateway/static/root/assets/{tunnel-api-C2_SEpMa.js → tunnel-api-sUbAaSX6.js} +1 -1
  96. package/dist/gateway/static/root/assets/{usage-page-CqMzyGiK.js → usage-page-NPLApyNj.js} +1 -1
  97. package/dist/gateway/static/root/assets/{use-autosave-BhsYFV0o.js → use-autosave-CZzYhcAl.js} +1 -1
  98. package/dist/gateway/static/root/assets/{use-composer-attachments-Bv4umde0.js → use-composer-attachments-Bb_Hqqry.js} +1 -1
  99. package/dist/gateway/static/root/assets/{use-file-preview-expanded-CBVymo3h.js → use-file-preview-expanded-D4WI5JDn.js} +2 -2
  100. package/dist/gateway/static/root/assets/{user-model-page-EMn_nA9w.js → user-model-page-DAEiJzNV.js} +1 -1
  101. package/dist/gateway/static/root/assets/{voice-api-key-field-DRoGFFs6.js → voice-api-key-field-CIIGmtHR.js} +1 -1
  102. package/dist/gateway/static/root/assets/{voice-config-api-BwLiaw5J.js → voice-config-api-BtWFziQc.js} +1 -1
  103. package/dist/gateway/static/root/assets/{work-discovery-overlay-DbH62mtI.js → work-discovery-overlay-DxRDLQvs.js} +1 -1
  104. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BYfytB9q.js → workflow-run-setup-panel-Be_Rey6d.js} +1 -1
  105. package/dist/gateway/static/root/assets/{workflows-page-rJqJ9dQo.js → workflows-page-wJk7l1_H.js} +1 -1
  106. package/dist/gateway/static/root/assets/{workspace-api-BHy2a_hm.js → workspace-api-B5ssQs4p.js} +2 -2
  107. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-DrAX_9m_.js → xopc-cloud-account-card-D7Rtu5eI.js} +1 -1
  108. package/dist/gateway/static/root/index.html +27 -27
  109. package/dist/package.js +1 -1
  110. package/dist/src/agent/session/session-config-service.js +2 -4
  111. package/dist/src/browser/native-messaging-host.js +1 -1
  112. package/dist/src/browser/providers/browser-ext-install.js +2 -2
  113. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  114. package/dist/src/cli/commands/onboard.js +1 -1
  115. package/dist/src/gateway/hono/app.js +1 -1
  116. package/dist/src/gateway/hono/routes/browser-install.js +1 -1
  117. package/dist/src/gateway/service/session-command-service.js +1 -1
  118. package/dist/src/gateway/service.js +4 -4
  119. package/dist/src/home-intelligence/host.js +2 -2
  120. package/dist/src/personal-agent/service.js +1 -11
  121. package/dist/src/providers/prompt-cache-payload.js +18 -22
  122. package/dist/src/session/config-store.js +1 -2
  123. package/dist/src/storage/sqlite/device-pairing-approval.js +1 -1
  124. package/dist/src/storage/sqlite/migrations/246_personal_session_thinking.sql +22 -0
  125. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  126. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  127. package/dist/src/storage/sqlite/schema.js +1 -1
  128. package/package.json +3 -3
  129. package/dist/gateway/static/root/assets/gateway-realtime-store-BkE2mHog.js +0 -1
  130. package/dist/gateway/static/root/assets/index-BGBkIIzM.css +0 -1
  131. package/dist/gateway/static/root/assets/messages-Uqz0xpsK.js +0 -3
  132. package/dist/gateway/static/root/assets/models-hub-cache-3HOFy11k.js +0 -1
  133. package/dist/gateway/static/root/assets/session-manager-De46GeR0.js +0 -16
  134. package/dist/gateway/static/root/assets/settings-advanced-gate-BOHKIN4t.js +0 -1
  135. package/dist/src/personal-agent/model-config.d.ts +0 -5
  136. package/dist/src/personal-agent/model-config.js +0 -59
@@ -1 +1 @@
1
- import{n as e,t}from"./vendor-react-BOUWij0V.js";import{t as n}from"./cloud-C4-yfnnk.js";import{t as r}from"./external-link-DjqjBmc3.js";import{a as i,n as a,r as o}from"./locale-store-UEl-U1DO.js";import{n as s,t as c}from"./cloud-credits-BMYMiiNn.js";import{i as l}from"./vendor-swr-BIWyz7Rc.js";import{t as u}from"./button-CS04eWY9.js";import{t as d}from"./skeleton-BwbyijEw.js";import{Uo as f,ho as p}from"./index-Cz75qf5b.js";var m=e(),h=t();async function g(){let e=await i(o(`/api/models/xopc-cloud/account-summary`));return c.parse(e.payload)}function _(e){let t=(0,m.c)(148),{labels:i}=e,o=a(v)===`zh`?`zh-CN`:`en-US`,c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c={refreshInterval:6e4,revalidateOnFocus:!0},t[0]=c):c=t[0];let{data:_,error:y,isLoading:b,isValidating:x,mutate:S}=l(`/api/models/xopc-cloud/account-summary`,g,c);if(b){let e;return t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,h.jsx)(d,{className:`h-40 w-full rounded-xl`}),t[1]=e):e=t[1],e}if(y||!_){let e;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,h.jsx)(p,{className:`mt-0.5 size-4 shrink-0 text-amber-500`,"aria-hidden":!0}),t[2]=e):e=t[2];let n;t[3]===i.title?n=t[4]:(n=(0,h.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:i.title}),t[3]=i.title,t[4]=n);let r;t[5]===i.unavailable?r=t[6]:(r=(0,h.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:i.unavailable}),t[5]=i.unavailable,t[6]=r);let a;t[7]!==n||t[8]!==r?(a=(0,h.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[e,(0,h.jsxs)(`div`,{children:[n,r]})]}),t[7]=n,t[8]=r,t[9]=a):a=t[9];let o;t[10]===S?o=t[11]:(o=()=>void S(),t[10]=S,t[11]=o);let s=x?`size-4 animate-spin`:`size-4`,c;t[12]===s?c=t[13]:(c=(0,h.jsx)(f,{className:s,"aria-hidden":!0}),t[12]=s,t[13]=c);let l;t[14]!==x||t[15]!==i.retry||t[16]!==o||t[17]!==c?(l=(0,h.jsxs)(u,{type:`button`,variant:`secondary`,disabled:x,onClick:o,children:[c,i.retry]}),t[14]=x,t[15]=i.retry,t[16]=o,t[17]=c,t[18]=l):l=t[18];let d;return t[19]!==a||t[20]!==l?(d=(0,h.jsx)(`section`,{className:`rounded-xl bg-surface-hover/25 p-4`,children:(0,h.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[a,l]})}),t[19]=a,t[20]=l,t[21]=d):d=t[21],d}let C,w,T,E,D,O,k,A,j,M;if(t[22]!==_.balance.availableCreditMicro||t[23]!==_.balance.expiring[0]||t[24]!==_.balance.grantedCreditMicro||t[25]!==_.balance.purchasedCreditMicro||t[26]!==_.balance.refundReservedCreditMicro||t[27]!==_.balance.usageReservedCreditMicro||t[28]!==_.links.details||t[29]!==_.links.purchase||t[30]!==_.usage.chargedCreditMicro||t[31]!==_.usage.requests||t[32]!==_.usage.totalTokens||t[33]!==i.availableCredits||t[34]!==i.connected||t[35]!==i.details||t[36]!==i.expiring||t[37]!==i.granted||t[38]!==i.purchase||t[39]!==i.purchased||t[40]!==i.recentUsage||t[41]!==i.reserved||t[42]!==i.title||t[43]!==i.tokenUsage||t[44]!==i.usageSummary||t[45]!==i.zeroBalance||t[46]!==o){let e=new Intl.NumberFormat(o),a=i.usageSummary.replace(`{{credits}}`,s(_.usage.chargedCreditMicro)).replace(`{{requests}}`,e.format(_.usage.requests));C=`rounded-xl bg-surface-hover/40 p-4 sm:p-5`;let c;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,h.jsx)(n,{className:`size-4 text-accent-fg`,"aria-hidden":!0}),t[57]=c):c=t[57];let l;t[58]===i.title?l=t[59]:(l=(0,h.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:i.title}),t[58]=i.title,t[59]=l);let d;t[60]===i.connected?d=t[61]:(d=(0,h.jsx)(`span`,{className:`rounded-full bg-emerald-500/10 px-2 py-0.5 text-xs font-medium text-emerald-700 dark:text-emerald-300`,children:i.connected}),t[60]=i.connected,t[61]=d);let f;t[62]!==l||t[63]!==d?(f=(0,h.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[c,l,d]}),t[62]=l,t[63]=d,t[64]=f):f=t[64];let p;t[65]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,h.jsx)(r,{className:`size-3.5`,"aria-hidden":!0}),t[65]=p):p=t[65];let m;t[66]!==_.links.purchase||t[67]!==i.purchase?(m=(0,h.jsx)(u,{asChild:!0,variant:`primary`,children:(0,h.jsxs)(`a`,{href:_.links.purchase,target:`_blank`,rel:`noreferrer`,children:[i.purchase,p]})}),t[66]=_.links.purchase,t[67]=i.purchase,t[68]=m):m=t[68];let g;t[69]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,h.jsx)(r,{className:`size-3.5`,"aria-hidden":!0}),t[69]=g):g=t[69];let v;t[70]!==_.links.details||t[71]!==i.details?(v=(0,h.jsx)(u,{asChild:!0,variant:`secondary`,children:(0,h.jsxs)(`a`,{href:_.links.details,target:`_blank`,rel:`noreferrer`,children:[i.details,g]})}),t[70]=_.links.details,t[71]=i.details,t[72]=v):v=t[72];let y;t[73]!==m||t[74]!==v?(y=(0,h.jsxs)(`div`,{className:`flex shrink-0 flex-wrap gap-2`,children:[m,v]}),t[73]=m,t[74]=v,t[75]=y):y=t[75],t[76]!==f||t[77]!==y?(w=(0,h.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[f,y]}),t[76]=f,t[77]=y,t[78]=w):w=t[78],j=`mt-4 grid gap-4 rounded-lg bg-surface-base/45 p-3 sm:grid-cols-[minmax(12rem,0.7fr)_minmax(0,1.3fr)] sm:gap-6`;let b;t[79]===i.availableCredits?b=t[80]:(b=(0,h.jsx)(`p`,{className:`text-xs font-medium text-fg-subtle`,children:i.availableCredits}),t[79]=i.availableCredits,t[80]=b);let x;t[81]===_.balance.availableCreditMicro?x=t[82]:(x=s(_.balance.availableCreditMicro),t[81]=_.balance.availableCreditMicro,t[82]=x);let S;t[83]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,h.jsx)(`span`,{className:`ml-2 text-sm font-medium text-fg-muted`,children:`Credits`}),t[83]=S):S=t[83];let N;t[84]===x?N=t[85]:(N=(0,h.jsxs)(`p`,{className:`mt-1 text-2xl font-semibold tracking-tight text-fg`,children:[x,S]}),t[84]=x,t[85]=N);let P;t[86]!==_.balance.availableCreditMicro||t[87]!==i.zeroBalance?(P=_.balance.availableCreditMicro===`0`?(0,h.jsx)(`p`,{className:`mt-1 text-sm font-medium text-danger`,children:i.zeroBalance}):null,t[86]=_.balance.availableCreditMicro,t[87]=i.zeroBalance,t[88]=P):P=t[88];let F=i.purchased,I;t[89]===_.balance.purchasedCreditMicro?I=t[90]:(I=s(_.balance.purchasedCreditMicro),t[89]=_.balance.purchasedCreditMicro,t[90]=I);let L;t[91]!==i.purchased||t[92]!==I?(L=(0,h.jsxs)(`div`,{children:[F,`: `,I,` Credits`]}),t[91]=i.purchased,t[92]=I,t[93]=L):L=t[93];let R=i.granted,z;t[94]===_.balance.grantedCreditMicro?z=t[95]:(z=s(_.balance.grantedCreditMicro),t[94]=_.balance.grantedCreditMicro,t[95]=z);let B;t[96]!==i.granted||t[97]!==z?(B=(0,h.jsxs)(`div`,{children:[R,`: `,z,` Credits`]}),t[96]=i.granted,t[97]=z,t[98]=B):B=t[98];let V=i.reserved,H=String(BigInt(_.balance.usageReservedCreditMicro)+BigInt(_.balance.refundReservedCreditMicro)),U;t[99]===H?U=t[100]:(U=s(H),t[99]=H,t[100]=U);let W;t[101]!==i.reserved||t[102]!==U?(W=(0,h.jsxs)(`div`,{children:[V,`: `,U,` Credits`]}),t[101]=i.reserved,t[102]=U,t[103]=W):W=t[103];let G;t[104]!==L||t[105]!==B||t[106]!==W?(G=(0,h.jsxs)(`div`,{className:`mt-2 space-y-1 text-xs text-fg-muted`,children:[L,B,W]}),t[104]=L,t[105]=B,t[106]=W,t[107]=G):G=t[107];let K;t[108]!==_.balance.expiring[0]||t[109]!==i.expiring||t[110]!==o?(K=_.balance.expiring[0]?(0,h.jsx)(`p`,{className:`mt-2 text-xs text-amber-600 dark:text-amber-400`,children:i.expiring.replace(`{{credits}}`,s(_.balance.expiring[0].creditMicro)).replace(`{{date}}`,new Date(_.balance.expiring[0].expiresAt).toLocaleDateString(o))}):null,t[108]=_.balance.expiring[0],t[109]=i.expiring,t[110]=o,t[111]=K):K=t[111],t[112]!==b||t[113]!==N||t[114]!==P||t[115]!==G||t[116]!==K?(M=(0,h.jsxs)(`div`,{children:[b,N,P,G,K]}),t[112]=b,t[113]=N,t[114]=P,t[115]=G,t[116]=K,t[117]=M):M=t[117],t[118]===i.recentUsage?k=t[119]:(k=(0,h.jsx)(`p`,{className:`text-xs font-medium text-fg-subtle`,children:i.recentUsage}),t[118]=i.recentUsage,t[119]=k),A=(0,h.jsx)(`p`,{className:`mt-1 text-sm leading-relaxed text-fg-muted`,children:a}),D=`mt-2 text-xs text-fg-subtle`,t[120]===i.tokenUsage?O=t[121]:(O=(0,h.jsx)(`summary`,{className:`cursor-pointer`,children:i.tokenUsage}),t[120]=i.tokenUsage,t[121]=O),T=`mt-1`,E=e.format(_.usage.totalTokens),t[22]=_.balance.availableCreditMicro,t[23]=_.balance.expiring[0],t[24]=_.balance.grantedCreditMicro,t[25]=_.balance.purchasedCreditMicro,t[26]=_.balance.refundReservedCreditMicro,t[27]=_.balance.usageReservedCreditMicro,t[28]=_.links.details,t[29]=_.links.purchase,t[30]=_.usage.chargedCreditMicro,t[31]=_.usage.requests,t[32]=_.usage.totalTokens,t[33]=i.availableCredits,t[34]=i.connected,t[35]=i.details,t[36]=i.expiring,t[37]=i.granted,t[38]=i.purchase,t[39]=i.purchased,t[40]=i.recentUsage,t[41]=i.reserved,t[42]=i.title,t[43]=i.tokenUsage,t[44]=i.usageSummary,t[45]=i.zeroBalance,t[46]=o,t[47]=C,t[48]=w,t[49]=T,t[50]=E,t[51]=D,t[52]=O,t[53]=k,t[54]=A,t[55]=j,t[56]=M}else C=t[47],w=t[48],T=t[49],E=t[50],D=t[51],O=t[52],k=t[53],A=t[54],j=t[55],M=t[56];let N;t[122]!==T||t[123]!==E?(N=(0,h.jsxs)(`p`,{className:T,children:[E,` tokens`]}),t[122]=T,t[123]=E,t[124]=N):N=t[124];let P;t[125]!==N||t[126]!==D||t[127]!==O?(P=(0,h.jsxs)(`details`,{className:D,children:[O,N]}),t[125]=N,t[126]=D,t[127]=O,t[128]=P):P=t[128];let F;t[129]!==_.balance.updatedAt||t[130]!==i.updatedAt||t[131]!==o?(F=i.updatedAt.replace(`{{time}}`,new Date(_.balance.updatedAt).toLocaleString(o)),t[129]=_.balance.updatedAt,t[130]=i.updatedAt,t[131]=o,t[132]=F):F=t[132];let I;t[133]===F?I=t[134]:(I=(0,h.jsx)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:F}),t[133]=F,t[134]=I);let L;t[135]!==P||t[136]!==I||t[137]!==k||t[138]!==A?(L=(0,h.jsxs)(`div`,{children:[k,A,P,I]}),t[135]=P,t[136]=I,t[137]=k,t[138]=A,t[139]=L):L=t[139];let R;t[140]!==L||t[141]!==j||t[142]!==M?(R=(0,h.jsxs)(`div`,{className:j,children:[M,L]}),t[140]=L,t[141]=j,t[142]=M,t[143]=R):R=t[143];let z;return t[144]!==C||t[145]!==w||t[146]!==R?(z=(0,h.jsxs)(`section`,{className:C,children:[w,R]}),t[144]=C,t[145]=w,t[146]=R,t[147]=z):z=t[147],z}function v(e){return e.language}export{_ as t};
1
+ import{n as e,t}from"./vendor-react-BOUWij0V.js";import{t as n}from"./cloud-C4-yfnnk.js";import{t as r}from"./external-link-DjqjBmc3.js";import{a as i,n as a,r as o}from"./locale-store-DSsLH7JO.js";import{n as s,t as c}from"./cloud-credits-BMYMiiNn.js";import{i as l}from"./vendor-swr-BIWyz7Rc.js";import{t as u}from"./button-CS04eWY9.js";import{t as d}from"./skeleton-BwbyijEw.js";import{Uo as f,ho as p}from"./index-DU5FmDQh.js";var m=e(),h=t();async function g(){let e=await i(o(`/api/models/xopc-cloud/account-summary`));return c.parse(e.payload)}function _(e){let t=(0,m.c)(148),{labels:i}=e,o=a(v)===`zh`?`zh-CN`:`en-US`,c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c={refreshInterval:6e4,revalidateOnFocus:!0},t[0]=c):c=t[0];let{data:_,error:y,isLoading:b,isValidating:x,mutate:S}=l(`/api/models/xopc-cloud/account-summary`,g,c);if(b){let e;return t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,h.jsx)(d,{className:`h-40 w-full rounded-xl`}),t[1]=e):e=t[1],e}if(y||!_){let e;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,h.jsx)(p,{className:`mt-0.5 size-4 shrink-0 text-amber-500`,"aria-hidden":!0}),t[2]=e):e=t[2];let n;t[3]===i.title?n=t[4]:(n=(0,h.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:i.title}),t[3]=i.title,t[4]=n);let r;t[5]===i.unavailable?r=t[6]:(r=(0,h.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:i.unavailable}),t[5]=i.unavailable,t[6]=r);let a;t[7]!==n||t[8]!==r?(a=(0,h.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[e,(0,h.jsxs)(`div`,{children:[n,r]})]}),t[7]=n,t[8]=r,t[9]=a):a=t[9];let o;t[10]===S?o=t[11]:(o=()=>void S(),t[10]=S,t[11]=o);let s=x?`size-4 animate-spin`:`size-4`,c;t[12]===s?c=t[13]:(c=(0,h.jsx)(f,{className:s,"aria-hidden":!0}),t[12]=s,t[13]=c);let l;t[14]!==x||t[15]!==i.retry||t[16]!==o||t[17]!==c?(l=(0,h.jsxs)(u,{type:`button`,variant:`secondary`,disabled:x,onClick:o,children:[c,i.retry]}),t[14]=x,t[15]=i.retry,t[16]=o,t[17]=c,t[18]=l):l=t[18];let d;return t[19]!==a||t[20]!==l?(d=(0,h.jsx)(`section`,{className:`rounded-xl bg-surface-hover/25 p-4`,children:(0,h.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[a,l]})}),t[19]=a,t[20]=l,t[21]=d):d=t[21],d}let C,w,T,E,D,O,k,A,j,M;if(t[22]!==_.balance.availableCreditMicro||t[23]!==_.balance.expiring[0]||t[24]!==_.balance.grantedCreditMicro||t[25]!==_.balance.purchasedCreditMicro||t[26]!==_.balance.refundReservedCreditMicro||t[27]!==_.balance.usageReservedCreditMicro||t[28]!==_.links.details||t[29]!==_.links.purchase||t[30]!==_.usage.chargedCreditMicro||t[31]!==_.usage.requests||t[32]!==_.usage.totalTokens||t[33]!==i.availableCredits||t[34]!==i.connected||t[35]!==i.details||t[36]!==i.expiring||t[37]!==i.granted||t[38]!==i.purchase||t[39]!==i.purchased||t[40]!==i.recentUsage||t[41]!==i.reserved||t[42]!==i.title||t[43]!==i.tokenUsage||t[44]!==i.usageSummary||t[45]!==i.zeroBalance||t[46]!==o){let e=new Intl.NumberFormat(o),a=i.usageSummary.replace(`{{credits}}`,s(_.usage.chargedCreditMicro)).replace(`{{requests}}`,e.format(_.usage.requests));C=`rounded-xl bg-surface-hover/40 p-4 sm:p-5`;let c;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,h.jsx)(n,{className:`size-4 text-accent-fg`,"aria-hidden":!0}),t[57]=c):c=t[57];let l;t[58]===i.title?l=t[59]:(l=(0,h.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:i.title}),t[58]=i.title,t[59]=l);let d;t[60]===i.connected?d=t[61]:(d=(0,h.jsx)(`span`,{className:`rounded-full bg-emerald-500/10 px-2 py-0.5 text-xs font-medium text-emerald-700 dark:text-emerald-300`,children:i.connected}),t[60]=i.connected,t[61]=d);let f;t[62]!==l||t[63]!==d?(f=(0,h.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[c,l,d]}),t[62]=l,t[63]=d,t[64]=f):f=t[64];let p;t[65]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,h.jsx)(r,{className:`size-3.5`,"aria-hidden":!0}),t[65]=p):p=t[65];let m;t[66]!==_.links.purchase||t[67]!==i.purchase?(m=(0,h.jsx)(u,{asChild:!0,variant:`primary`,children:(0,h.jsxs)(`a`,{href:_.links.purchase,target:`_blank`,rel:`noreferrer`,children:[i.purchase,p]})}),t[66]=_.links.purchase,t[67]=i.purchase,t[68]=m):m=t[68];let g;t[69]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,h.jsx)(r,{className:`size-3.5`,"aria-hidden":!0}),t[69]=g):g=t[69];let v;t[70]!==_.links.details||t[71]!==i.details?(v=(0,h.jsx)(u,{asChild:!0,variant:`secondary`,children:(0,h.jsxs)(`a`,{href:_.links.details,target:`_blank`,rel:`noreferrer`,children:[i.details,g]})}),t[70]=_.links.details,t[71]=i.details,t[72]=v):v=t[72];let y;t[73]!==m||t[74]!==v?(y=(0,h.jsxs)(`div`,{className:`flex shrink-0 flex-wrap gap-2`,children:[m,v]}),t[73]=m,t[74]=v,t[75]=y):y=t[75],t[76]!==f||t[77]!==y?(w=(0,h.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[f,y]}),t[76]=f,t[77]=y,t[78]=w):w=t[78],j=`mt-4 grid gap-4 rounded-lg bg-surface-base/45 p-3 sm:grid-cols-[minmax(12rem,0.7fr)_minmax(0,1.3fr)] sm:gap-6`;let b;t[79]===i.availableCredits?b=t[80]:(b=(0,h.jsx)(`p`,{className:`text-xs font-medium text-fg-subtle`,children:i.availableCredits}),t[79]=i.availableCredits,t[80]=b);let x;t[81]===_.balance.availableCreditMicro?x=t[82]:(x=s(_.balance.availableCreditMicro),t[81]=_.balance.availableCreditMicro,t[82]=x);let S;t[83]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,h.jsx)(`span`,{className:`ml-2 text-sm font-medium text-fg-muted`,children:`Credits`}),t[83]=S):S=t[83];let N;t[84]===x?N=t[85]:(N=(0,h.jsxs)(`p`,{className:`mt-1 text-2xl font-semibold tracking-tight text-fg`,children:[x,S]}),t[84]=x,t[85]=N);let P;t[86]!==_.balance.availableCreditMicro||t[87]!==i.zeroBalance?(P=_.balance.availableCreditMicro===`0`?(0,h.jsx)(`p`,{className:`mt-1 text-sm font-medium text-danger`,children:i.zeroBalance}):null,t[86]=_.balance.availableCreditMicro,t[87]=i.zeroBalance,t[88]=P):P=t[88];let F=i.purchased,I;t[89]===_.balance.purchasedCreditMicro?I=t[90]:(I=s(_.balance.purchasedCreditMicro),t[89]=_.balance.purchasedCreditMicro,t[90]=I);let L;t[91]!==i.purchased||t[92]!==I?(L=(0,h.jsxs)(`div`,{children:[F,`: `,I,` Credits`]}),t[91]=i.purchased,t[92]=I,t[93]=L):L=t[93];let R=i.granted,z;t[94]===_.balance.grantedCreditMicro?z=t[95]:(z=s(_.balance.grantedCreditMicro),t[94]=_.balance.grantedCreditMicro,t[95]=z);let B;t[96]!==i.granted||t[97]!==z?(B=(0,h.jsxs)(`div`,{children:[R,`: `,z,` Credits`]}),t[96]=i.granted,t[97]=z,t[98]=B):B=t[98];let V=i.reserved,H=String(BigInt(_.balance.usageReservedCreditMicro)+BigInt(_.balance.refundReservedCreditMicro)),U;t[99]===H?U=t[100]:(U=s(H),t[99]=H,t[100]=U);let W;t[101]!==i.reserved||t[102]!==U?(W=(0,h.jsxs)(`div`,{children:[V,`: `,U,` Credits`]}),t[101]=i.reserved,t[102]=U,t[103]=W):W=t[103];let G;t[104]!==L||t[105]!==B||t[106]!==W?(G=(0,h.jsxs)(`div`,{className:`mt-2 space-y-1 text-xs text-fg-muted`,children:[L,B,W]}),t[104]=L,t[105]=B,t[106]=W,t[107]=G):G=t[107];let K;t[108]!==_.balance.expiring[0]||t[109]!==i.expiring||t[110]!==o?(K=_.balance.expiring[0]?(0,h.jsx)(`p`,{className:`mt-2 text-xs text-amber-600 dark:text-amber-400`,children:i.expiring.replace(`{{credits}}`,s(_.balance.expiring[0].creditMicro)).replace(`{{date}}`,new Date(_.balance.expiring[0].expiresAt).toLocaleDateString(o))}):null,t[108]=_.balance.expiring[0],t[109]=i.expiring,t[110]=o,t[111]=K):K=t[111],t[112]!==b||t[113]!==N||t[114]!==P||t[115]!==G||t[116]!==K?(M=(0,h.jsxs)(`div`,{children:[b,N,P,G,K]}),t[112]=b,t[113]=N,t[114]=P,t[115]=G,t[116]=K,t[117]=M):M=t[117],t[118]===i.recentUsage?k=t[119]:(k=(0,h.jsx)(`p`,{className:`text-xs font-medium text-fg-subtle`,children:i.recentUsage}),t[118]=i.recentUsage,t[119]=k),A=(0,h.jsx)(`p`,{className:`mt-1 text-sm leading-relaxed text-fg-muted`,children:a}),D=`mt-2 text-xs text-fg-subtle`,t[120]===i.tokenUsage?O=t[121]:(O=(0,h.jsx)(`summary`,{className:`cursor-pointer`,children:i.tokenUsage}),t[120]=i.tokenUsage,t[121]=O),T=`mt-1`,E=e.format(_.usage.totalTokens),t[22]=_.balance.availableCreditMicro,t[23]=_.balance.expiring[0],t[24]=_.balance.grantedCreditMicro,t[25]=_.balance.purchasedCreditMicro,t[26]=_.balance.refundReservedCreditMicro,t[27]=_.balance.usageReservedCreditMicro,t[28]=_.links.details,t[29]=_.links.purchase,t[30]=_.usage.chargedCreditMicro,t[31]=_.usage.requests,t[32]=_.usage.totalTokens,t[33]=i.availableCredits,t[34]=i.connected,t[35]=i.details,t[36]=i.expiring,t[37]=i.granted,t[38]=i.purchase,t[39]=i.purchased,t[40]=i.recentUsage,t[41]=i.reserved,t[42]=i.title,t[43]=i.tokenUsage,t[44]=i.usageSummary,t[45]=i.zeroBalance,t[46]=o,t[47]=C,t[48]=w,t[49]=T,t[50]=E,t[51]=D,t[52]=O,t[53]=k,t[54]=A,t[55]=j,t[56]=M}else C=t[47],w=t[48],T=t[49],E=t[50],D=t[51],O=t[52],k=t[53],A=t[54],j=t[55],M=t[56];let N;t[122]!==T||t[123]!==E?(N=(0,h.jsxs)(`p`,{className:T,children:[E,` tokens`]}),t[122]=T,t[123]=E,t[124]=N):N=t[124];let P;t[125]!==N||t[126]!==D||t[127]!==O?(P=(0,h.jsxs)(`details`,{className:D,children:[O,N]}),t[125]=N,t[126]=D,t[127]=O,t[128]=P):P=t[128];let F;t[129]!==_.balance.updatedAt||t[130]!==i.updatedAt||t[131]!==o?(F=i.updatedAt.replace(`{{time}}`,new Date(_.balance.updatedAt).toLocaleString(o)),t[129]=_.balance.updatedAt,t[130]=i.updatedAt,t[131]=o,t[132]=F):F=t[132];let I;t[133]===F?I=t[134]:(I=(0,h.jsx)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:F}),t[133]=F,t[134]=I);let L;t[135]!==P||t[136]!==I||t[137]!==k||t[138]!==A?(L=(0,h.jsxs)(`div`,{children:[k,A,P,I]}),t[135]=P,t[136]=I,t[137]=k,t[138]=A,t[139]=L):L=t[139];let R;t[140]!==L||t[141]!==j||t[142]!==M?(R=(0,h.jsxs)(`div`,{className:j,children:[M,L]}),t[140]=L,t[141]=j,t[142]=M,t[143]=R):R=t[143];let z;return t[144]!==C||t[145]!==w||t[146]!==R?(z=(0,h.jsxs)(`section`,{className:C,children:[w,R]}),t[144]=C,t[145]=w,t[146]=R,t[147]=z):z=t[147],z}function v(e){return e.language}export{_ as t};
@@ -11,7 +11,7 @@
11
11
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=20260910-1" />
12
12
  <link rel="manifest" href="/site.webmanifest?v=20260910-1" />
13
13
  <title>XOPC — Keep what matters moving.</title>
14
- <script type="module" crossorigin src="/assets/index-Cz75qf5b.js"></script>
14
+ <script type="module" crossorigin src="/assets/index-DU5FmDQh.js"></script>
15
15
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BOUWij0V.js">
@@ -25,15 +25,15 @@
25
25
  <link rel="modulepreload" crossorigin href="/assets/download-Dk-ZjtO6.js">
26
26
  <link rel="modulepreload" crossorigin href="/assets/plus-Q2yW6OE7.js">
27
27
  <link rel="modulepreload" crossorigin href="/assets/x-B_N4OPjy.js">
28
- <link rel="modulepreload" crossorigin href="/assets/messages-Uqz0xpsK.js">
29
- <link rel="modulepreload" crossorigin href="/assets/locale-store-UEl-U1DO.js">
28
+ <link rel="modulepreload" crossorigin href="/assets/messages-Cn25s55n.js">
29
+ <link rel="modulepreload" crossorigin href="/assets/locale-store-DSsLH7JO.js">
30
30
  <link rel="modulepreload" crossorigin href="/assets/cn-JdwAhgNB.js">
31
31
  <link rel="modulepreload" crossorigin href="/assets/schemas-CObaziC7.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/local-apps-yys1VChX.js">
33
33
  <link rel="modulepreload" crossorigin href="/assets/product-delivery-BAks11S4.js">
34
34
  <link rel="modulepreload" crossorigin href="/assets/app-link-4gpFbdsr.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/copy-to-clipboard-HOJ79TWv.js">
36
- <link rel="modulepreload" crossorigin href="/assets/markdown-view-DUo9Tl3H.js">
36
+ <link rel="modulepreload" crossorigin href="/assets/markdown-view-2rwSrMXW.js">
37
37
  <link rel="modulepreload" crossorigin href="/assets/check-DUBLcKHA.js">
38
38
  <link rel="modulepreload" crossorigin href="/assets/copy-Dv6d4Dvw.js">
39
39
  <link rel="modulepreload" crossorigin href="/assets/button-CS04eWY9.js">
@@ -69,29 +69,29 @@
69
69
  <link rel="modulepreload" crossorigin href="/assets/rotate-cw-LIg3Am9S.js">
70
70
  <link rel="modulepreload" crossorigin href="/assets/search-DA7gz22f.js">
71
71
  <link rel="modulepreload" crossorigin href="/assets/index.module-Cd9ENXfk.js">
72
- <link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-pVqdX0dO.js">
73
- <link rel="modulepreload" crossorigin href="/assets/session-api-DtpzfFNw.js">
72
+ <link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-CeL1OFDZ.js">
73
+ <link rel="modulepreload" crossorigin href="/assets/session-api-BUa3BaGX.js">
74
74
  <link rel="modulepreload" crossorigin href="/assets/constants-Dy8Gw0sF.js">
75
75
  <link rel="modulepreload" crossorigin href="/assets/app-chrome-BeB4KgOf.js">
76
76
  <link rel="modulepreload" crossorigin href="/assets/attachment-utils-core-BIOUBrpT.js">
77
77
  <link rel="modulepreload" crossorigin href="/assets/files-Bw4SBGdM.js">
78
- <link rel="modulepreload" crossorigin href="/assets/workspace-api-BHy2a_hm.js">
78
+ <link rel="modulepreload" crossorigin href="/assets/workspace-api-B5ssQs4p.js">
79
79
  <link rel="modulepreload" crossorigin href="/assets/electron-env-Dit0bHgy.js">
80
80
  <link rel="modulepreload" crossorigin href="/assets/use-async-resource-GrnWNwMZ.js">
81
- <link rel="modulepreload" crossorigin href="/assets/activity-store-CvR3rjdp.js">
82
- <link rel="modulepreload" crossorigin href="/assets/use-file-preview-expanded-CBVymo3h.js">
81
+ <link rel="modulepreload" crossorigin href="/assets/activity-store-BVtU6S1w.js">
82
+ <link rel="modulepreload" crossorigin href="/assets/use-file-preview-expanded-D4WI5JDn.js">
83
83
  <link rel="modulepreload" crossorigin href="/assets/mic-CuUb7zc-.js">
84
84
  <link rel="modulepreload" crossorigin href="/assets/globe-DSSGFWFn.js">
85
- <link rel="modulepreload" crossorigin href="/assets/share-link-dialog-DGUiTTZ3.js">
86
- <link rel="modulepreload" crossorigin href="/assets/local-session-drafts-LCEmswHW.js">
85
+ <link rel="modulepreload" crossorigin href="/assets/share-link-dialog-CbkS1cj-.js">
86
+ <link rel="modulepreload" crossorigin href="/assets/local-session-drafts-DnSw14fE.js">
87
87
  <link rel="modulepreload" crossorigin href="/assets/tasks-DwKXgZ-I.js">
88
- <link rel="modulepreload" crossorigin href="/assets/capabilities-DQEeiNq_.js">
88
+ <link rel="modulepreload" crossorigin href="/assets/capabilities-LpGa-olH.js">
89
89
  <link rel="modulepreload" crossorigin href="/assets/skill-wire-pattern-BPpeIcCi.js">
90
- <link rel="modulepreload" crossorigin href="/assets/shares-api-BIx5ji2U.js">
91
- <link rel="modulepreload" crossorigin href="/assets/capabilities-B-vsqiw2.js">
92
- <link rel="modulepreload" crossorigin href="/assets/use-composer-attachments-Bv4umde0.js">
90
+ <link rel="modulepreload" crossorigin href="/assets/shares-api-BUGeqXCG.js">
91
+ <link rel="modulepreload" crossorigin href="/assets/capabilities-HaRLmYU1.js">
92
+ <link rel="modulepreload" crossorigin href="/assets/use-composer-attachments-Bb_Hqqry.js">
93
93
  <link rel="modulepreload" crossorigin href="/assets/git-branch-Dh9uxTot.js">
94
- <link rel="modulepreload" crossorigin href="/assets/notes-api-bDQOslzF.js">
94
+ <link rel="modulepreload" crossorigin href="/assets/notes-api-D9fGUbkK.js">
95
95
  <link rel="modulepreload" crossorigin href="/assets/message-square-fVE7Ghj1.js">
96
96
  <link rel="modulepreload" crossorigin href="/assets/pause-DuPxgSxk.js">
97
97
  <link rel="modulepreload" crossorigin href="/assets/play-kxZvpBg8.js">
@@ -99,24 +99,24 @@
99
99
  <link rel="modulepreload" crossorigin href="/assets/settings-2-D-csvaET.js">
100
100
  <link rel="modulepreload" crossorigin href="/assets/sparkles-DHlfQFAF.js">
101
101
  <link rel="modulepreload" crossorigin href="/assets/middleware-Pd0e8Igk.js">
102
- <link rel="modulepreload" crossorigin href="/assets/gateway-realtime-store-BkE2mHog.js">
103
- <link rel="modulepreload" crossorigin href="/assets/gateway-realtime-DC8N3fNU.js">
102
+ <link rel="modulepreload" crossorigin href="/assets/gateway-realtime-store-BazlseY_.js">
103
+ <link rel="modulepreload" crossorigin href="/assets/gateway-realtime-Biz18NiE.js">
104
104
  <link rel="modulepreload" crossorigin href="/assets/tool-activity-BtJkgjFf.js">
105
- <link rel="modulepreload" crossorigin href="/assets/registry-api-CftkuRz7.js">
106
- <link rel="modulepreload" crossorigin href="/assets/gateway-config-swr-CWIVt5XM.js">
107
- <link rel="modulepreload" crossorigin href="/assets/agents-admin-api-DsXvJeqd.js">
108
- <link rel="modulepreload" crossorigin href="/assets/session-manager-De46GeR0.js">
109
- <link rel="modulepreload" crossorigin href="/assets/send-session-input-D4c72mD6.js">
110
- <link rel="modulepreload" crossorigin href="/assets/theme-store-ByAapAD7.js">
111
- <link rel="modulepreload" crossorigin href="/assets/extension-provider-CDOEBj7F.js">
105
+ <link rel="modulepreload" crossorigin href="/assets/registry-api-ZhIt79wL.js">
106
+ <link rel="modulepreload" crossorigin href="/assets/gateway-config-swr-siY2J0hx.js">
107
+ <link rel="modulepreload" crossorigin href="/assets/agents-admin-api-DgQph1Pu.js">
108
+ <link rel="modulepreload" crossorigin href="/assets/session-manager-BWLIDok4.js">
109
+ <link rel="modulepreload" crossorigin href="/assets/send-session-input-B64q4_6R.js">
110
+ <link rel="modulepreload" crossorigin href="/assets/theme-store-Kz0VUMSb.js">
111
+ <link rel="modulepreload" crossorigin href="/assets/extension-provider-B-_CkaD2.js">
112
112
  <link rel="modulepreload" crossorigin href="/assets/loopi-Djb8XU3l.js">
113
- <link rel="modulepreload" crossorigin href="/assets/models-hub-cache-3HOFy11k.js">
113
+ <link rel="modulepreload" crossorigin href="/assets/models-hub-cache-DaqiLHPe.js">
114
114
  <link rel="modulepreload" crossorigin href="/assets/skill-api-utils-C7V4JVXM.js">
115
115
  <link rel="modulepreload" crossorigin href="/assets/date-formatters-CUZAyDEg.js">
116
116
  <link rel="modulepreload" crossorigin href="/assets/settings-form-draft-Dy10ldo8.js">
117
117
  <link rel="stylesheet" crossorigin href="/assets/markdown-view-DSjfHfaW.css">
118
118
  <link rel="stylesheet" crossorigin href="/assets/loopi-C09I2mNj.css">
119
- <link rel="stylesheet" crossorigin href="/assets/index-BGBkIIzM.css">
119
+ <link rel="stylesheet" crossorigin href="/assets/index-CGVecvp4.css">
120
120
  </head>
121
121
  <body>
122
122
  <div id="root"></div>
package/dist/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  //#region package.json
2
- var version = "0.0.376";
2
+ var version = "0.0.377";
3
3
  //#endregion
4
4
  export { version };
@@ -8,7 +8,6 @@ import { normalizeWorkingDirectoryInput } from "../../session/session-workspace.
8
8
  import { getProjectWorkspacePathForSession } from "../../projects/workspace.js";
9
9
  import { isPersonalConversation } from "../../personal-agent/repository.js";
10
10
  import { getModelThinking } from "../../providers/model-thinking.js";
11
- import { savePersonalModelConfig } from "../../personal-agent/model-config.js";
12
11
  import { normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel } from "../transcript/thinking-types.js";
13
12
  import "../../session/index.js";
14
13
  import { mkdir } from "node:fs/promises";
@@ -28,8 +27,7 @@ var SessionConfigService = class {
28
27
  * invalid field. Model and thinking are validated together and committed in one write.
29
28
  */
30
29
  async patch(conversationId, partial) {
31
- const personal = isPersonalConversation(conversationId);
32
- const configuredThinking = personal ? void 0 : resolveEffectiveAgentConfigForSession(conversationId).config.runtime.thinkingLevel;
30
+ const configuredThinking = isPersonalConversation(conversationId) ? void 0 : resolveEffectiveAgentConfigForSession(conversationId).config.runtime.thinkingLevel;
33
31
  if (configuredThinking && partial.thinkingLevel !== void 0 && partial.thinkingLevel !== configuredThinking) return {
34
32
  ok: false,
35
33
  code: "INVALID_THINKING",
@@ -70,7 +68,7 @@ var SessionConfigService = class {
70
68
  };
71
69
  const thinkingLevel = requested ?? chooseModelThinking(capabilities, existing?.thinkingLevel);
72
70
  const modelRef = `${model.provider}/${model.id}`;
73
- const updated = personal ? savePersonalModelConfig(conversationId, modelRef, thinkingLevel) : await this.opts.sessionConfigStore.update(conversationId, {
71
+ const updated = await this.opts.sessionConfigStore.update(conversationId, {
74
72
  modelOverride: modelRef,
75
73
  thinkingLevel,
76
74
  fixedModel: partial.fixedModel ?? existing?.fixedModel ?? false
@@ -4,8 +4,8 @@ import { init_src } from "../../packages/gateway-contract/src/index.js";
4
4
  import { getGatewayIdentityPublicKeyRaw, getOrCreateGatewayIdentity, init_gateway_identity_repository } from "../storage/sqlite/gateway-identity-repository.js";
5
5
  import { createDevicePairingSetup, init_device_pairing_repository } from "../storage/sqlite/device-pairing-repository.js";
6
6
  import { loadConfig } from "../config/loader.js";
7
- import { browserEnrollmentPublicKeyThumbprint } from "./enrollment.js";
8
7
  import { BROWSER_EXTENSION_ID, BROWSER_NATIVE_HOST_NAME } from "./extension-identity.js";
8
+ import { browserEnrollmentPublicKeyThumbprint } from "./enrollment.js";
9
9
  import os from "node:os";
10
10
  //#region src/browser/native-messaging-host.ts
11
11
  init_src();
@@ -4,10 +4,10 @@ import { createLogger } from "../../utils/logger/index.js";
4
4
  import { init_logger } from "../../utils/logger.js";
5
5
  import { init_write_file_atomic, writeTextAtomic } from "../../infra/write-file-atomic.js";
6
6
  import { init_paths, resolveBinDir, resolveConfigPath } from "../../config/paths.js";
7
- import { assertCacheDir } from "../cache-dir-policy.js";
7
+ import { resolvePackageRoot } from "../../infra/update-check.js";
8
8
  import { BROWSER_EXTENSION_ID, BROWSER_NATIVE_HOST_NAME } from "../extension-identity.js";
9
+ import { assertCacheDir } from "../cache-dir-policy.js";
9
10
  import "../native-messaging-host.js";
10
- import { resolvePackageRoot } from "../../infra/update-check.js";
11
11
  import { dirname, join } from "node:path";
12
12
  import { chmodSync, existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
13
13
  import { fileURLToPath } from "node:url";
@@ -53,7 +53,7 @@ async function checkDatabaseSchema(ctx) {
53
53
  id: "database-schema",
54
54
  label: "Database schema",
55
55
  status: "pass",
56
- message: `SQLite schema v${status.dbVersion} (current release v245).`,
56
+ message: `SQLite schema v${status.dbVersion} (current release v246).`,
57
57
  hints: []
58
58
  };
59
59
  }
@@ -5,8 +5,8 @@ import { resolveGatewayLocalClientHost } from "../../config/gateway-bind.js";
5
5
  import { saveConfig } from "../../config/loader.js";
6
6
  import { formatExamples, register } from "../registry.js";
7
7
  import "../../config/index.js";
8
- import { colors } from "../utils/colors.js";
9
8
  import { provisionEagerRuntimes } from "../../runtime-tools/bootstrap.js";
9
+ import { colors } from "../utils/colors.js";
10
10
  import { initWorkspace } from "../utils/init-workspace.js";
11
11
  import { setupModel } from "./onboard/model.js";
12
12
  import { getChannelConfigurators } from "./onboard/channels/registry.js";
@@ -7,10 +7,10 @@ import { resolveGatewayEffectiveHost } from "../../config/gateway-bind.js";
7
7
  import { loadTunnelState } from "../../tunnel/tunnel-state.js";
8
8
  import { resolveReverseProxyPublicUrl } from "../public-url.js";
9
9
  import { maxSessionInputRequestBodyBytes } from "../chat-limits.js";
10
- import { BROWSER_EXTENSION_ID } from "../../browser/extension-identity.js";
11
10
  import { isLoopbackIpAddress, isTrustedProxyAddress } from "../client-ip.js";
12
11
  import { buildGatewayConsoleCspHeader } from "../security/csp.js";
13
12
  import { checkBrowserOrigin, isChromeExtensionOrigin } from "../security/origin-check.js";
13
+ import { BROWSER_EXTENSION_ID } from "../../browser/extension-identity.js";
14
14
  import { auth } from "./middleware/auth.js";
15
15
  import { gatewayScopes } from "./middleware/scopes.js";
16
16
  import { createChannelRateLimitMiddleware, createChatRateLimitMiddleware, createMediaRateLimitMiddleware, createStrictRateLimitMiddleware, createTaskRateLimitMiddleware, createXopcCloudPollRateLimitMiddleware } from "./middleware/strict-rate-limit.js";
@@ -1,5 +1,5 @@
1
- import { acquireBrowserInstallLock, cancelBrowserInstall } from "../../../browser/install-lock.js";
2
1
  import { createGatewayRouteLogger } from "../lib/route-logger.js";
2
+ import { acquireBrowserInstallLock, cancelBrowserInstall } from "../../../browser/install-lock.js";
3
3
  import { runPlaywrightChromiumInstallWithProgress } from "../../../browser/providers/playwright-install.js";
4
4
  import { streamSSE } from "hono/streaming";
5
5
  //#region src/gateway/hono/routes/browser-install.ts
@@ -28,7 +28,7 @@ async function receiveSessionCommand(service, conversationId, principalId, comma
28
28
  const receive = () => withModelConfigLock(conversationId, async () => {
29
29
  const personal = getPersonalAgentByConversation(conversationId);
30
30
  if (personal && "creation" in command && command.creation.agentId !== personal.agentId) throw new SessionCommandError("BAD_REQUEST", "Personal AI identity is fixed");
31
- const configuredThinking = ("creation" in command ? resolveEffectiveAgentConfigForAgent(command.creation.agentId) : resolveEffectiveAgentConfigForSession(conversationId)).config.runtime.thinkingLevel;
31
+ const configuredThinking = personal ? void 0 : ("creation" in command ? resolveEffectiveAgentConfigForAgent(command.creation.agentId) : resolveEffectiveAgentConfigForSession(conversationId)).config.runtime.thinkingLevel;
32
32
  if (configuredThinking && "creation" in command && command.creation.thinkingLevel !== configuredThinking) throw new SessionCommandError("BAD_REQUEST", `This agent uses thinking ${configuredThinking}`);
33
33
  const clientMessageId = "commandId" in command ? command.commandId : command.clientMessageId;
34
34
  const existing = matchSessionInputReceipt(conversationId, clientMessageId, principalId, sessionCommandHash(command));
@@ -94,10 +94,6 @@ import { DiscussionSealer } from "../discussions/sealer.js";
94
94
  import "../discussions/index.js";
95
95
  import { EndpointToolRuntime } from "../endpoint-tools/runtime.js";
96
96
  import "../endpoint-tools/index.js";
97
- import { HomeCapabilityPreflightService } from "../home-intelligence/capability-preflight.js";
98
- import { HomeAdviceGenerator } from "../home-intelligence/generator.js";
99
- import { HomeIntelligenceHost } from "../home-intelligence/host.js";
100
- import { HomeSnapshotBuilder } from "../home-intelligence/snapshot.js";
101
97
  import { assertGatewayAuthConfigured, extractToken, resolveGatewayAuth, validateToken } from "./auth.js";
102
98
  import { prepareAutomationAgentSession } from "./automation-agent-session.js";
103
99
  import { stopTailscaleExposure } from "./tailscale-lifecycle.js";
@@ -159,6 +155,10 @@ import { TaskMainUpdateDecisionService } from "../tasks/task-main-update-decisio
159
155
  import { selectTaskMainUpdateAttempt, submitAndConfirmTaskMainUpdate } from "../tasks/task-main-update-input.js";
160
156
  import { checkAppContextAccess, prepareAppContext } from "./service/app-context-access.js";
161
157
  import { applyAutomaticVoiceLanguage, inferProductLanguageFromEnvironment, initializeVoiceDefaults } from "../voice/language-profile.js";
158
+ import { HomeAdviceGenerator } from "../home-intelligence/generator.js";
159
+ import { HomeIntelligenceHost } from "../home-intelligence/host.js";
160
+ import { HomeSnapshotBuilder } from "../home-intelligence/snapshot.js";
161
+ import { HomeCapabilityPreflightService } from "../home-intelligence/capability-preflight.js";
162
162
  import crypto from "node:crypto";
163
163
  //#region src/gateway/service.ts
164
164
  init_session_repository();
@@ -1,10 +1,10 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
+ import { HomeAdviceBudgetExceededError, isHomeProseLocalized } from "./generator.js";
3
4
  import { homePatternKey } from "./strategy.js";
5
+ import { HomeAdvicePolicy } from "./policy.js";
4
6
  import { HomeIntelligenceRepository } from "./repository.js";
5
7
  import { HomeOpportunityApplicationService } from "./application-service.js";
6
- import { HomeAdvicePolicy } from "./policy.js";
7
- import { HomeAdviceBudgetExceededError, isHomeProseLocalized } from "./generator.js";
8
8
  import { buildHomeOpportunityNotification } from "./notification.js";
9
9
  import { createHash } from "node:crypto";
10
10
  //#region src/home-intelligence/host.ts
@@ -120,22 +120,12 @@ async function provisionPersonalAgent(service, ownerId, requestedModel, availabl
120
120
  mode: "replace",
121
121
  include: []
122
122
  },
123
- runtime: { thinkingLevel: "off" },
124
123
  models: { chat: {
125
124
  primary: chosen.id,
126
125
  fallbacks: []
127
126
  } }
128
127
  });
129
- else if (existing.provisioningState !== "ready" || existing.models?.chat?.primary !== chosen.id || existing.runtime?.thinkingLevel !== "off") await catalog.update(agentId, {
130
- models: { chat: {
131
- primary: chosen.id,
132
- fallbacks: []
133
- } },
134
- runtime: {
135
- ...existing.runtime,
136
- thinkingLevel: "off"
137
- }
138
- });
128
+ else if (existing.provisioningState !== "ready") await catalog.update(agentId, {});
139
129
  const record = getPersonalAgent(ownerId);
140
130
  if (!record) throw new Error("Personal Agent provisioning did not complete");
141
131
  const conversationId = record.conversationId;
@@ -180,7 +180,7 @@ function addOpenAIHistoryBreakpoint(items) {
180
180
  };
181
181
  return next;
182
182
  }
183
- if (!("content" in item)) continue;
183
+ if (item.role === "system" || item.role === "developer" || !("content" in item)) continue;
184
184
  if (index === next.length - 1 && item.role === "user") continue;
185
185
  const content = addBreakpointToContent(item.content);
186
186
  if (content === item.content) continue;
@@ -198,30 +198,25 @@ function applyOpenAIExplicitCache(payload, context, cacheKey) {
198
198
  const split = splitPromptCacheBoundary(context.systemPrompt ?? "");
199
199
  const stablePrompt = split?.stablePrefix ?? stripPromptCacheBoundary(context.systemPrompt ?? "");
200
200
  const dynamicPrompt = split?.dynamicSuffix ?? "";
201
- const stableContent = [{
202
- type: "input_text",
203
- text: stablePrompt,
204
- prompt_cache_breakpoint: { mode: "explicit" }
205
- }];
206
- const dynamicContent = [{
207
- type: "input_text",
208
- text: dynamicPrompt
209
- }];
210
201
  if (Array.isArray(record.input)) {
211
- const expectedInstructions = stripPromptCacheBoundary(context.systemPrompt ?? "");
212
- const canReplaceInstructions = record.instructions === void 0 || record.instructions === expectedInstructions;
202
+ const input = [...record.input];
203
+ const initialMessage = asRecord(input[0]);
204
+ const content = initialMessage?.content;
205
+ const initialText = typeof content === "string" ? content : Array.isArray(content) && content.length === 1 && asRecord(content[0])?.type === "input_text" ? asRecord(content[0])?.text : void 0;
206
+ if ((initialMessage?.role === "system" || initialMessage?.role === "developer") && initialText === stripPromptCacheBoundary(context.systemPrompt ?? "") && stablePrompt) input[0] = {
207
+ ...initialMessage,
208
+ content: [{
209
+ type: "input_text",
210
+ text: stablePrompt,
211
+ prompt_cache_breakpoint: { mode: "explicit" }
212
+ }, ...dynamicPrompt ? [{
213
+ type: "input_text",
214
+ text: dynamicPrompt
215
+ }] : []]
216
+ };
213
217
  return {
214
218
  ...record,
215
- ...canReplaceInstructions ? { instructions: [{
216
- type: "message",
217
- role: "system",
218
- content: stableContent
219
- }, ...dynamicPrompt ? [{
220
- type: "message",
221
- role: "system",
222
- content: dynamicContent
223
- }] : []] } : {},
224
- input: addOpenAIHistoryBreakpoint(record.input),
219
+ input: addOpenAIHistoryBreakpoint(input),
225
220
  prompt_cache_key: cacheKey,
226
221
  prompt_cache_options: {
227
222
  mode: "explicit",
@@ -259,6 +254,7 @@ function preparePromptCacheContext(model, context) {
259
254
  }
260
255
  function withPromptCachePayloadTransform(model, context, options, policyInput) {
261
256
  const plan = buildPromptCachePlan(model, context, policyInput, options?.reasoning);
257
+ if (plan.providerMode === "explicit" && model.provider === "openai" && model.baseUrl === "https://api.openai.com/v1" && options?.apiKey !== void 0 && !options.apiKey.startsWith("sk-")) plan.providerMode = "implicit";
262
258
  const upstream = options?.onPayload;
263
259
  const cacheRetention = model.api === "anthropic-messages" || model.api === "bedrock-converse-stream" ? plan.providerMode === "none" ? "none" : plan.policy.lifetime : "none";
264
260
  return {
@@ -3,7 +3,6 @@ import { init_logger } from "../utils/logger.js";
3
3
  import { requireXopcDatabase } from "../storage/sqlite/connection.js";
4
4
  import { deleteSessionConfig, getSessionConfig, hasSessionConfig, setSessionConfig, updateSessionConfig } from "../storage/sqlite/config-repository.js";
5
5
  import { init_sqlite } from "../storage/sqlite/index.js";
6
- import { syncPersonalModelConfig } from "../personal-agent/model-config.js";
7
6
  //#region src/session/config-store.ts
8
7
  init_sqlite();
9
8
  init_logger();
@@ -22,7 +21,7 @@ var SessionConfigStore = class {
22
21
  }
23
22
  async get(conversationId) {
24
23
  this.requireDatabase();
25
- return syncPersonalModelConfig(conversationId);
24
+ return getSessionConfig(conversationId);
26
25
  }
27
26
  async set(conversationId, config) {
28
27
  this.requireDatabase();
@@ -5,8 +5,8 @@ import { init_src } from "../../../packages/gateway-contract/src/index.js";
5
5
  import { init_gateway_scopes } from "../../gateway/security/gateway-scopes.js";
6
6
  import { createDevice, getDevice, init_device_access_repository, registerInitialDeviceRefreshToken, revokeDevice } from "./device-access-repository.js";
7
7
  import { getOrCreateGatewayIdentity, init_gateway_identity_repository } from "./gateway-identity-repository.js";
8
- import { browserEnrollmentPublicKeyThumbprint } from "../../browser/enrollment.js";
9
8
  import "../../browser/extension-identity.js";
9
+ import { browserEnrollmentPublicKeyThumbprint } from "../../browser/enrollment.js";
10
10
  import crypto from "node:crypto";
11
11
  //#region src/storage/sqlite/device-pairing-approval.ts
12
12
  init_src();
@@ -0,0 +1,22 @@
1
+ -- Personal thinking preferences belong to the dedicated conversation, not its Agent.
2
+ INSERT INTO session_config (conversation_id, thinking_level, updated_at)
3
+ SELECT s.conversation_id, json_extract(a.overrides_json, '$.runtime.thinkingLevel'),
4
+ MAX(a.updated_at, s.updated_at)
5
+ FROM sessions s JOIN agents a ON a.id = s.agent_id
6
+ WHERE json_extract(s.custom_data_json, '$.personalAgent') = 1
7
+ AND json_type(a.overrides_json, '$.runtime.thinkingLevel') = 'text'
8
+ ON CONFLICT(conversation_id) DO UPDATE SET
9
+ thinking_level = COALESCE(session_config.thinking_level, excluded.thinking_level),
10
+ updated_at = CASE WHEN session_config.thinking_level IS NULL
11
+ THEN MAX(session_config.updated_at + 1, excluded.updated_at) ELSE session_config.updated_at END;
12
+
13
+ UPDATE agents SET
14
+ overrides_json = json_remove(overrides_json, '$.runtime.thinkingLevel'),
15
+ revision = revision + 1,
16
+ updated_at = MAX(updated_at + 1, CAST(unixepoch('subsec') * 1000 AS INTEGER))
17
+ WHERE id IN (SELECT agent_id FROM sessions WHERE json_extract(custom_data_json, '$.personalAgent') = 1)
18
+ AND json_type(overrides_json, '$.runtime.thinkingLevel') IS NOT NULL;
19
+
20
+ UPDATE agent_catalog_settings SET revision = revision + 1,
21
+ updated_at = MAX(updated_at + 1, CAST(unixepoch('subsec') * 1000 AS INTEGER))
22
+ WHERE singleton_id = 1 AND changes() > 0;
@@ -3,7 +3,7 @@ import type { ApplyMigrationsOptions } from './types.js';
3
3
  /** Baseline schema version applied from schema.sql on first open. */
4
4
  export declare const XOPC_DB_BASELINE_SCHEMA_VERSION = 165;
5
5
  /** Latest schema version this release supports (increment when adding migrations). */
6
- export declare const XOPC_DB_SCHEMA_VERSION = 245;
6
+ export declare const XOPC_DB_SCHEMA_VERSION = 246;
7
7
  export declare function resolveMigrationsDir(override?: string): string;
8
8
  /**
9
9
  * Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.
@@ -59,7 +59,7 @@ function applySingleMigration(db, migration, discardOldScenes = false) {
59
59
  function applyPendingMigrations(db, options = {}) {
60
60
  db.function("xopc_memory_search_text", { deterministic: true }, (value) => memorySearchText(String(value ?? "")));
61
61
  db.function("xopc_operation_id", () => currentOperationId() ?? null);
62
- const targetVersion = options.targetVersion ?? 245;
62
+ const targetVersion = options.targetVersion ?? 246;
63
63
  let currentVersion = readSchemaVersion(db);
64
64
  if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
65
65
  if (!options.migrationsDir && currentVersion < 165) throw new DatabaseSchemaTooOldError(currentVersion, 165);
@@ -97,7 +97,7 @@ function applyPendingMigrations(db, options = {}) {
97
97
  }
98
98
  /** Inspect schema version without mutating the database. */
99
99
  function inspectSchemaMigrationStatus(db, options = {}) {
100
- const appVersion = options.targetVersion ?? 245;
100
+ const appVersion = options.targetVersion ?? 246;
101
101
  const dbVersion = readSchemaVersion(db);
102
102
  if (dbVersion > appVersion) return {
103
103
  dbVersion,
@@ -140,7 +140,7 @@ var init_runner = __esmMin((() => {
140
140
  init_errors();
141
141
  log = createLogger("Sqlite:Migrations");
142
142
  XOPC_DB_BASELINE_SCHEMA_VERSION = 165;
143
- XOPC_DB_SCHEMA_VERSION = 245;
143
+ XOPC_DB_SCHEMA_VERSION = 246;
144
144
  }));
145
145
  //#endregion
146
146
  init_runner();
@@ -28,7 +28,7 @@ function ensureXopcDatabaseSchema(db, options = {}) {
28
28
  currentVersion = 165;
29
29
  }
30
30
  applyPendingMigrations(db, {
31
- targetVersion: 245,
31
+ targetVersion: 246,
32
32
  databasePath: fresh ? void 0 : options.databasePath
33
33
  });
34
34
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xopcai/xopc",
3
- "version": "0.0.376",
3
+ "version": "0.0.377",
4
4
  "description": "Local-first personal AI with Ada, task delegation, files, projects, workflows, and automations. Use cloud or local models.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -166,11 +166,11 @@
166
166
  "vitest": "4.1.5",
167
167
  "vue": "^3.5.35",
168
168
  "@xopcai/browser-control-contract": "0.1.0",
169
- "@xopcai/endpoint-tools-client": "0.0.0",
170
169
  "@xopcai/endpoint-tools-protocol": "0.0.0",
170
+ "@xopcai/gateway-contract": "0.0.0",
171
171
  "@xopcai/image-providers": "0.1.0",
172
+ "@xopcai/endpoint-tools-client": "0.0.0",
172
173
  "@xopcai/computer-control-contract": "0.1.0",
173
- "@xopcai/gateway-contract": "0.0.0",
174
174
  "@xopcai/realtime-client": "0.0.0",
175
175
  "@xopcai/realtime-protocol": "0.0.0"
176
176
  },
@@ -1 +0,0 @@
1
- import{p as e}from"./locale-store-UEl-U1DO.js";var t=e(()=>({connectionState:`idle`,error:null}));function n(e){t.setState(e)}export{t as n,n as t};