@darkclaw921/umgt 0.2.0 → 0.3.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 (40) hide show
  1. package/README.md +8 -0
  2. package/dist/server/agents/core-tools.d.ts +6 -2
  3. package/dist/server/agents/core-tools.js +8 -3
  4. package/dist/server/agents/core-tools.js.map +1 -1
  5. package/dist/server/agents/core.js +4 -3
  6. package/dist/server/agents/core.js.map +1 -1
  7. package/dist/server/asset-media.d.ts +2 -1
  8. package/dist/server/asset-media.js +1 -1
  9. package/dist/server/asset-media.js.map +1 -1
  10. package/dist/server/chat-computer.d.ts +3 -1
  11. package/dist/server/chat-computer.js +8 -3
  12. package/dist/server/chat-computer.js.map +1 -1
  13. package/dist/server/chat.js +4 -3
  14. package/dist/server/chat.js.map +1 -1
  15. package/dist/server/core-client.d.ts +4 -0
  16. package/dist/server/core-client.js +19 -0
  17. package/dist/server/core-client.js.map +1 -1
  18. package/dist/server/generated-media.d.ts +19 -0
  19. package/dist/server/generated-media.js +342 -0
  20. package/dist/server/generated-media.js.map +1 -0
  21. package/dist/server/routes.js +3 -1
  22. package/dist/server/routes.js.map +1 -1
  23. package/dist/shared/generated-media.d.ts +2 -0
  24. package/dist/shared/generated-media.js +3 -0
  25. package/dist/shared/generated-media.js.map +1 -0
  26. package/dist/web/assets/{AgentActivity-sYJeY5Yf.js → AgentActivity-DRuju8iC.js} +1 -1
  27. package/dist/web/assets/{AssetSelectionWizard-a43_6NO7.js → AssetSelectionWizard-7SBX7wym.js} +1 -1
  28. package/dist/web/assets/CoreAccount-BfH0gEKJ.js +1 -0
  29. package/dist/web/assets/{KidsApp-D-8t3HPy.js → KidsApp-ChVKRU9B.js} +2 -2
  30. package/dist/web/assets/{PlainChat-CMxYwKko.js → PlainChat-C4V_wRVc.js} +1 -1
  31. package/dist/web/assets/{WorkflowJournal-Did0sRta.js → WorkflowJournal-BlTNapOH.js} +1 -1
  32. package/dist/web/assets/{YandexGamesView-R64RSJRL.js → YandexGamesView-BAuOI0EI.js} +1 -1
  33. package/dist/web/assets/{index-sNciOZYG.js → index-B6_q6dBC.js} +2 -2
  34. package/dist/web/assets/{resources-DppXCagL.js → resources-xyl8IpX6.js} +1 -1
  35. package/dist/web/assets/{workflow-BrIKN5ER.js → workflow-CEkwrbrT.js} +4 -4
  36. package/dist/web/assets/workflow-s2TewWL6.css +1 -0
  37. package/dist/web/index.html +1 -1
  38. package/package.json +7 -7
  39. package/dist/web/assets/CoreAccount-D4ZC8CWv.js +0 -1
  40. package/dist/web/assets/workflow-BhcU9uvG.css +0 -1
@@ -0,0 +1 @@
1
+ .generated-media-preview{max-width:100%;margin:12px 0;display:block}.generated-media-preview img,.generated-media-preview video{object-fit:contain;border-radius:16px;width:min(100%,720px);max-height:65vh;margin-bottom:10px;display:block}.generated-media-preview audio{width:min(100%,480px);margin-bottom:10px;display:block}.generated-media-preview a{overflow-wrap:anywhere;display:inline-block}.video-reference{color:var(--text,#12142b);background:var(--surface,#fff);border:1px solid var(--border,#d9dcec);border-radius:18px;flex-shrink:0;margin:12px 0;overflow:hidden}.video-reference-toggle{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;align-items:center;gap:12px;padding:16px 20px;display:flex}.video-reference-toggle>b{font-size:16px}.video-reference-toggle>span:last-child{color:var(--muted,#5d628a);text-overflow:ellipsis;white-space:nowrap;max-width:40%;margin-left:auto;font-size:13px;overflow:hidden}.video-reference-body{flex-direction:column;gap:12px;max-height:75vh;padding:0 20px 20px;display:flex;overflow:auto}.video-reference-body>*{flex-shrink:0}.video-reference-body p{max-width:78ch;margin:0;line-height:1.6}.video-reference-body label{flex-direction:column;gap:8px;display:flex}.video-reference-body textarea{resize:vertical;border:1px solid var(--border,#d9dcec);width:100%;min-height:80px;color:inherit;background:var(--bg,#f5f6fb);border-radius:12px;padding:12px}.video-reference-body video{background:#12142b;border-radius:12px;align-self:center;max-width:100%;max-height:300px}.video-reference-body progress{width:100%;accent-color:var(--accent,#0c8c6c)}.video-actions{flex-wrap:wrap;gap:10px;display:flex}.video-reference-body button{cursor:pointer;border:1px solid var(--border,#d9dcec);color:inherit;background:var(--inset,#eef0f8);font:inherit;border-radius:12px;padding:10px 14px}.video-reference-body button:disabled{opacity:.45;cursor:default}.video-reference-body .video-delete{color:var(--danger,#b84c40);background:0 0;align-self:flex-start}.video-tools{border-left:4px solid var(--accent,#0c8c6c);background:var(--inset,#eef0f8);padding:12px 16px}.video-tools p{margin:8px 0}.video-notice,.video-reference-body small{color:var(--muted,#5d628a);font-size:13px}.video-analysis-progress{flex-direction:column;gap:8px;display:flex}.video-evidence{border-bottom:1px solid var(--border,#d9dcec);padding:16px 0}.video-evidence>div{flex-wrap:wrap;align-items:baseline;gap:8px;margin:8px 0;display:flex}.video-evidence em{font-size:12px}.video-error{color:var(--danger,#b84c40)}.video-idea-layout{flex-direction:column;flex:1;width:100%;min-height:0;display:flex}.video-idea-layout>.video-reference{margin:8px 24px}.video-idea-layout>.k-work{flex:1;min-height:250px}@media (width<=600px){.video-idea-layout>.video-reference{margin:8px}.video-reference-toggle{padding:14px 12px}.video-reference-toggle>span:last-child{display:none}.video-reference-body{padding:0 12px 16px}.video-actions>button{flex-grow:1}}
@@ -17,7 +17,7 @@
17
17
  content="Локальная мастерская игр. От идеи и плана до работающей игры с вашим AI-агентом."
18
18
  />
19
19
  <title>Game Hub — мастерская игр</title>
20
- <script type="module" crossorigin src="/assets/index-sNciOZYG.js"></script>
20
+ <script type="module" crossorigin src="/assets/index-B6_q6dBC.js"></script>
21
21
  <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-CdVFa8IP.js">
22
22
  <link rel="modulepreload" crossorigin href="/assets/ui-wHE_yBK0.js">
23
23
  <link rel="stylesheet" crossorigin href="/assets/index-Izzbh11U.css">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darkclaw921/umgt",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "Local AI game development workspace",
6
6
  "engines": {
@@ -85,13 +85,13 @@
85
85
  "registry": "https://registry.npmjs.org/"
86
86
  },
87
87
  "umgtReleaseNotes": {
88
- "title": "Репорты, переписка с командой и обновления студии",
88
+ "title": "Обложки, музыка, видео и восстановленные лимиты",
89
89
  "changes": [
90
- "Сообщайте об ошибках и отправляйте пожелания через жучок в правом нижнем углу.",
91
- "Прикрепляйте до трёх скриншотов, читайте ответы команды и дополняйте обращения прямо в студии.",
92
- "В ядре появились просмотр аккаунта отправителя, переписка и статусы обращений.",
93
- "API позволяет получать обращения, отвечать пользователям и автоматически закрывать репорты.",
94
- "Студия сообщает о новых версиях, показывает список изменений и команду обновления."
90
+ "Создавайте обложки, музыку и короткие видео через OpenRouter прямо в чате и задачах проекта.",
91
+ "Смотрите изображения, слушайте музыку, воспроизводите видео и скачивайте готовые файлы в студии.",
92
+ "Прерванную генерацию можно продолжить без повторного платного запроса.",
93
+ "Карточки месячного, недельного и дневного лимитов остаются видимыми при неактивной подписке и недоступности данных.",
94
+ "Остаток, расход и резерв на ожидающую генерацию показаны отдельно в процентах."
95
95
  ]
96
96
  }
97
97
  }
@@ -1 +0,0 @@
1
- import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CdVFa8IP.js";import{n as i}from"./ui-wHE_yBK0.js";import{M as a,c as o,j as s,m as c}from"./index-sNciOZYG.js";var l=t(n(),1),u=new Map([[`bold`,l.createElement(l.Fragment,null,l.createElement(`path`,{d:`M208,36H48A20,20,0,0,0,28,56v56c0,54.29,26.32,87.22,48.4,105.29,23.71,19.39,47.44,26,48.44,26.29a12.1,12.1,0,0,0,6.32,0c1-.28,24.73-6.9,48.44-26.29,22.08-18.07,48.4-51,48.4-105.29V56A20,20,0,0,0,208,36Zm-4,76c0,35.71-13.09,64.69-38.91,86.15A126.28,126.28,0,0,1,128,219.38a126.14,126.14,0,0,1-37.09-21.23C65.09,176.69,52,147.71,52,112V60H204ZM79.51,144.49a12,12,0,1,1,17-17L112,143l47.51-47.52a12,12,0,0,1,17,17l-56,56a12,12,0,0,1-17,0Z`}))],[`duotone`,l.createElement(l.Fragment,null,l.createElement(`path`,{d:`M216,56v56c0,96-88,120-88,120S40,208,40,112V56a8,8,0,0,1,8-8H208A8,8,0,0,1,216,56Z`,opacity:`0.2`}),l.createElement(`path`,{d:`M208,40H48A16,16,0,0,0,32,56v56c0,52.72,25.52,84.67,46.93,102.19,23.06,18.86,46,25.26,47,25.53a8,8,0,0,0,4.2,0c1-.27,23.91-6.67,47-25.53C198.48,196.67,224,164.72,224,112V56A16,16,0,0,0,208,40Zm0,72c0,37.07-13.66,67.16-40.6,89.42A129.3,129.3,0,0,1,128,223.62a128.25,128.25,0,0,1-38.92-21.81C61.82,179.51,48,149.3,48,112l0-56,160,0ZM82.34,141.66a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35a8,8,0,0,1,11.32,11.32l-56,56a8,8,0,0,1-11.32,0Z`}))],[`fill`,l.createElement(l.Fragment,null,l.createElement(`path`,{d:`M208,40H48A16,16,0,0,0,32,56v56c0,52.72,25.52,84.67,46.93,102.19,23.06,18.86,46,25.26,47,25.53a8,8,0,0,0,4.2,0c1-.27,23.91-6.67,47-25.53C198.48,196.67,224,164.72,224,112V56A16,16,0,0,0,208,40Zm-34.32,69.66-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35a8,8,0,0,1,11.32,11.32Z`}))],[`light`,l.createElement(l.Fragment,null,l.createElement(`path`,{d:`M208,42H48A14,14,0,0,0,34,56v56c0,51.94,25.12,83.4,46.2,100.64,22.73,18.6,45.27,24.89,46.22,25.15a6,6,0,0,0,3.16,0c.95-.26,23.49-6.55,46.22-25.15C196.88,195.4,222,163.94,222,112V56A14,14,0,0,0,208,42Zm2,70c0,37.76-13.94,68.39-41.44,91.06A131.17,131.17,0,0,1,128,225.72a130.94,130.94,0,0,1-40.56-22.66C59.94,180.39,46,149.76,46,112V56a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2ZM172.24,99.76a6,6,0,0,1,0,8.48l-56,56a6,6,0,0,1-8.48,0l-24-24a6,6,0,0,1,8.48-8.48L112,151.51l51.76-51.75A6,6,0,0,1,172.24,99.76Z`}))],[`regular`,l.createElement(l.Fragment,null,l.createElement(`path`,{d:`M208,40H48A16,16,0,0,0,32,56v56c0,52.72,25.52,84.67,46.93,102.19,23.06,18.86,46,25.26,47,25.53a8,8,0,0,0,4.2,0c1-.27,23.91-6.67,47-25.53C198.48,196.67,224,164.72,224,112V56A16,16,0,0,0,208,40Zm0,72c0,37.07-13.66,67.16-40.6,89.42A129.3,129.3,0,0,1,128,223.62a128.25,128.25,0,0,1-38.92-21.81C61.82,179.51,48,149.3,48,112l0-56,160,0ZM82.34,141.66a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35a8,8,0,0,1,11.32,11.32l-56,56a8,8,0,0,1-11.32,0Z`}))],[`thin`,l.createElement(l.Fragment,null,l.createElement(`path`,{d:`M208,44H48A12,12,0,0,0,36,56v56c0,51.16,24.73,82.12,45.47,99.1,22.4,18.32,44.55,24.5,45.48,24.76a4,4,0,0,0,2.1,0c.93-.26,23.08-6.44,45.48-24.76,20.74-17,45.47-47.94,45.47-99.1V56A12,12,0,0,0,208,44Zm4,68c0,38.44-14.23,69.63-42.29,92.71A132.45,132.45,0,0,1,128,227.82a132.23,132.23,0,0,1-41.71-23.11C58.23,181.63,44,150.44,44,112V56a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4Zm-41.17-10.83a4,4,0,0,1,0,5.66l-56,56a4,4,0,0,1-5.66,0l-24-24a4,4,0,0,1,5.66-5.66L112,154.34l53.17-53.17A4,4,0,0,1,170.83,101.17Z`}))]]),d=new Map([[`bold`,l.createElement(l.Fragment,null,l.createElement(`path`,{d:`M196,136a16,16,0,1,1-16-16A16,16,0,0,1,196,136Zm40-36v80a32,32,0,0,1-32,32H60a32,32,0,0,1-32-32V60.92A32,32,0,0,1,60,28H192a12,12,0,0,1,0,24H60a8,8,0,0,0-8,8.26v.08A8.32,8.32,0,0,0,60.48,68H204A32,32,0,0,1,236,100Zm-24,0a8,8,0,0,0-8-8H60.48A33.72,33.72,0,0,1,52,90.92V180a8,8,0,0,0,8,8H204a8,8,0,0,0,8-8Z`}))],[`duotone`,l.createElement(l.Fragment,null,l.createElement(`path`,{d:`M224,80V192a8,8,0,0,1-8,8H56a16,16,0,0,1-16-16V56A16,16,0,0,0,56,72H216A8,8,0,0,1,224,80Z`,opacity:`0.2`}),l.createElement(`path`,{d:`M216,64H56a8,8,0,0,1,0-16H192a8,8,0,0,0,0-16H56A24,24,0,0,0,32,56V184a24,24,0,0,0,24,24H216a16,16,0,0,0,16-16V80A16,16,0,0,0,216,64Zm0,128H56a8,8,0,0,1-8-8V78.63A23.84,23.84,0,0,0,56,80H216Zm-48-60a12,12,0,1,1,12,12A12,12,0,0,1,168,132Z`}))],[`fill`,l.createElement(l.Fragment,null,l.createElement(`path`,{d:`M216,64H56a8,8,0,0,1,0-16H192a8,8,0,0,0,0-16H56A24,24,0,0,0,32,56V184a24,24,0,0,0,24,24H216a16,16,0,0,0,16-16V80A16,16,0,0,0,216,64Zm-36,80a12,12,0,1,1,12-12A12,12,0,0,1,180,144Z`}))],[`light`,l.createElement(l.Fragment,null,l.createElement(`path`,{d:`M216,66H56a10,10,0,0,1,0-20H192a6,6,0,0,0,0-12H56A22,22,0,0,0,34,56V184a22,22,0,0,0,22,22H216a14,14,0,0,0,14-14V80A14,14,0,0,0,216,66Zm2,126a2,2,0,0,1-2,2H56a10,10,0,0,1-10-10V75.59A21.84,21.84,0,0,0,56,78H216a2,2,0,0,1,2,2Zm-28-60a10,10,0,1,1-10-10A10,10,0,0,1,190,132Z`}))],[`regular`,l.createElement(l.Fragment,null,l.createElement(`path`,{d:`M216,64H56a8,8,0,0,1,0-16H192a8,8,0,0,0,0-16H56A24,24,0,0,0,32,56V184a24,24,0,0,0,24,24H216a16,16,0,0,0,16-16V80A16,16,0,0,0,216,64Zm0,128H56a8,8,0,0,1-8-8V78.63A23.84,23.84,0,0,0,56,80H216Zm-48-60a12,12,0,1,1,12,12A12,12,0,0,1,168,132Z`}))],[`thin`,l.createElement(l.Fragment,null,l.createElement(`path`,{d:`M216,68H56a12,12,0,0,1,0-24H192a4,4,0,0,0,0-8H56A20,20,0,0,0,36,56V184a20,20,0,0,0,20,20H216a12,12,0,0,0,12-12V80A12,12,0,0,0,216,68Zm4,124a4,4,0,0,1-4,4H56a12,12,0,0,1-12-12V72a19.86,19.86,0,0,0,12,4H216a4,4,0,0,1,4,4Zm-32-60a8,8,0,1,1-8-8A8,8,0,0,1,188,132Z`}))]]),f=l.forwardRef((t,n)=>l.createElement(e,{ref:n,...t,weights:u}));f.displayName=`ShieldCheckIcon`;var p=f,m=l.forwardRef((t,n)=>l.createElement(e,{ref:n,...t,weights:d}));m.displayName=`WalletIcon`;var h=m,g=r(),_=e=>e===void 0?`—`:e.toLocaleString(`ru-RU`),v=(e,t)=>!Number.isFinite(e)||!Number.isFinite(t)?void 0:t<=0?0:Math.min(100,Math.max(0,e/t*100)),y=e=>e===void 0?`—`:e>0&&e<1?`<1%`:e>99&&e<100?`>99%`:`${e.toLocaleString(o()===`en`?`en-US`:`ru-RU`,{maximumFractionDigits:1})}%`,b=e=>e?new Date(e).toLocaleString(o()===`en`?`en-US`:`ru-RU`):`—`;function x({modern:e=!1}){let[t,n]=(0,l.useState)(),[r,o]=(0,l.useState)(`https://umgt.aircoding.ai`),[u,d]=(0,l.useState)(``),[f,m]=(0,l.useState)(``),[x,S]=(0,l.useState)(!1),[C,w]=(0,l.useState)(),T=(0,l.useRef)(0),E=async()=>{let e=++T.current,t=await s(`/core`);e===T.current&&(n(t),o(t.url||`https://umgt.aircoding.ai`))};(0,l.useEffect)(()=>{let e=()=>{E().catch(e=>m(a(e)))},t=()=>{T.current++,n(void 0),w(void 0),d(``),e()};return e(),window.addEventListener(`umgt-usage-changed`,e),window.addEventListener(`umgt-account-changed`,t),()=>{T.current++,window.removeEventListener(`umgt-usage-changed`,e),window.removeEventListener(`umgt-account-changed`,t)}},[]);let D=async e=>{S(!0),m(``);try{await e(),await E(),window.dispatchEvent(new Event(`umgt-account-updated`))}catch(e){m(a(e))}finally{S(!1)}},O=async e=>{e.preventDefault(),await D(async()=>{await s(`/core/connect`,`POST`,{url:r,key:u}),n(void 0),d(``),w(void 0),window.dispatchEvent(new Event(`umgt-account-changed`))})},k=t?.entitlements,A=k?.ai_budget;return(0,g.jsxs)(`section`,{className:`settings-section core-account ${e?`core-account-modern`:``}`,"aria-label":`Подписка и доступ`,children:[(0,g.jsxs)(`div`,{className:`settings-description`,children:[(0,g.jsx)(`h2`,{children:`Подписка и доступ`}),(0,g.jsx)(`p`,{children:`Подключите аккаунт UMGT для работы AI. Проекты и инструменты остаются на вашем компьютере.`})]}),(0,g.jsxs)(`div`,{className:`settings-fields`,children:[f&&(0,g.jsx)(`p`,{role:`alert`,children:f}),!t?.connected&&(0,g.jsx)(`p`,{children:`Скопируйте личный API-ключ в кабинете game.aircoding.ai и вставьте его ниже. После подключения появятся баланс, подписка и остатки лимитов.`}),t?.connected&&t.profile&&(0,g.jsxs)(`div`,{className:`core-account-profile`,children:[(0,g.jsx)(c,{profile:t.profile}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`h3`,{children:t.profile.name||`Аккаунт UMGT`}),(0,g.jsx)(`p`,{children:`Профиль личного кабинета`})]})]}),k&&(0,g.jsxs)(g.Fragment,{children:[e?(0,g.jsxs)(g.Fragment,{children:[(0,g.jsxs)(`div`,{className:`core-membership ${k.subscription?.active?`active`:``}`,children:[(0,g.jsx)(`span`,{className:`core-card-icon`,children:(0,g.jsx)(p,{size:32,weight:`duotone`})}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`h3`,{children:k.subscription?.active?`Подписка активна`:`Подписка не активна`}),(0,g.jsx)(`p`,{children:k.subscription?.active?`Действует до ${b(k.subscription?.until)}`:`Оформи подписку или увеличь доступный лимит.`})]}),(0,g.jsx)(`span`,{className:`core-membership-badge`,children:k.subscription?.active?`Подключено`:`Без подписки`})]}),(0,g.jsx)(`dl`,{className:`core-metrics`,children:(0,g.jsxs)(`div`,{className:`core-metric core-metric-balance`,children:[(0,g.jsxs)(`dt`,{children:[(0,g.jsx)(h,{size:25,weight:`duotone`}),`Баланс`]}),(0,g.jsxs)(`dd`,{children:[_(k.balance_kop===void 0?void 0:k.balance_kop/100),` `,(0,g.jsx)(`span`,{children:`₽`})]}),(0,g.jsx)(`small`,{children:`Для генерации 3D и других услуг`})]})})]}):(0,g.jsxs)(`dl`,{className:`core-account-summary`,children:[(0,g.jsx)(`dt`,{children:`Подписка`}),(0,g.jsx)(`dd`,{children:k.subscription?.active?`Действует`:`Не активна`}),(0,g.jsx)(`dt`,{children:`Действует до`}),(0,g.jsx)(`dd`,{children:b(k.subscription?.until)}),(0,g.jsx)(`dt`,{children:`Баланс`}),(0,g.jsxs)(`dd`,{children:[_(k.balance_kop===void 0?void 0:k.balance_kop/100),` `,`₽`]})]}),A&&A.status!==`active`&&(0,g.jsx)(`p`,{role:`status`,children:A.message||`Лимиты подписки временно недоступны.`}),A?.status===`active`&&(0,g.jsx)(`p`,{className:`core-budget-description`,children:`Лимиты подписки обновляются по московскому времени.`}),(0,g.jsx)(`div`,{className:`core-account-periods ${A?.status===`active`?`core-account-periods-three`:``}`,children:(A?A.status===`active`?[`monthly`,`weekly`,`daily`]:[]:[`daily`,`weekly`]).map(t=>{let n=A?A[t]:t===`monthly`?void 0:k.limits?.[t],r=!!n?.pending_costs&&n.left>0,i=n?v(n.left,n.limit):void 0,a=i!==void 0&&i<=10?`critical`:i!==void 0&&i<=20?`warning`:`normal`,o=i===0?`Лимит исчерпан`:a===`critical`?`Критически мало доступного лимита`:a===`warning`?`Лимит заканчивается`:``;return n&&(e?(0,g.jsxs)(`section`,{className:`core-limit`,"data-level":a,"aria-label":t===`daily`?`Дневной лимит`:t===`weekly`?`Недельный лимит`:`Месячный лимит`,children:[(0,g.jsx)(`div`,{className:`core-limit-heading`,children:(0,g.jsx)(`h3`,{children:t===`daily`?`За сутки`:t===`weekly`?`За неделю`:`За месяц`})}),(0,g.jsxs)(`p`,{className:`core-limit-count`,children:[(0,g.jsx)(`span`,{children:`Осталось`}),(0,g.jsxs)(`b`,{children:[r?`≈`:``,y(i)]})]}),(0,g.jsx)(`progress`,{max:100,value:i,"aria-valuetext":y(i),"aria-label":t===`daily`?`Остаток дневного лимита`:t===`weekly`?`Остаток недельного лимита`:`Остаток месячного лимита`}),(0,g.jsxs)(`p`,{className:`core-limit-used`,children:[`Использовано `,r?`≈`:``,y(i===void 0?void 0:100-i)]}),o&&(0,g.jsx)(`small`,{className:`core-limit-notice`,children:o}),r&&(0,g.jsx)(`small`,{children:`Расчёт по подтверждённой стоимости. Цена части запросов пока неизвестна.`}),(0,g.jsxs)(`small`,{children:[`Обновление: `,A?new Date(n.resets_at).toLocaleString(`ru-RU`,{timeZone:`Europe/Moscow`})+` МСК`:b(n.resets_at)]})]},t):(0,g.jsxs)(`p`,{children:[t===`daily`?`За сутки`:t===`weekly`?`За неделю`:`За месяц`,`: осталось`,` `,y(i),`. Обновление:`,` `,b(n.resets_at),`.`]},t))})}),!A&&k.usage?.length?(0,g.jsxs)(`details`,{children:[(0,g.jsxs)(`summary`,{children:[`Расход за `,k.period??`месяц`]}),(0,g.jsx)(`ul`,{children:k.usage.map(e=>{let t=e.monthly_limit===null?void 0:v(e.monthly_limit-e.used_tokens,e.monthly_limit);return(0,g.jsxs)(`li`,{children:[e.service,`: `,e.monthly_limit===null?`Без ограничения`:`Осталось ${y(t)} · Использовано ${y(t===void 0?void 0:100-t)}`,`; `,_(e.spent_kop/100),` ₽`]},e.service)})})]}):null,k.courses?.length?(0,g.jsxs)(`p`,{children:[`Курсы: `,k.courses.join(`, `)]}):null,(0,g.jsx)(`div`,{className:`core-services`,children:k.access?.services?.map(e=>(0,g.jsxs)(`p`,{children:[e.name,`:`,` `,e.status===`active`?`доступен`:e.status===`disabled`?`выключен в UMGT`:`нет баланса`]},e.id))}),(0,g.jsxs)(`div`,{className:`core-account-actions`,children:[(0,g.jsx)(i,{type:`button`,disabled:x,onClick:()=>void D(async()=>{}),children:`Обновить`}),(0,g.jsx)(i,{type:`button`,disabled:x,onClick:()=>void D(async()=>w(await s(`/core/operations`))),children:`История операций`})]}),C&&(0,g.jsx)(`ul`,{className:`core-operation-history`,children:C.length?C.map(e=>(0,g.jsxs)(`li`,{children:[b(e.created_at),`: `,e.service??`game_hub`,`,`,` `,e.status,`,`,` `,_(Number(e.cost_kop??0)/100),` ₽`,e.error_code?` (${e.error_code})`:``]},e.id)):(0,g.jsx)(`li`,{children:`Операций пока нет.`})})]}),(0,g.jsxs)(`div`,{className:`core-account-links`,children:[(0,g.jsx)(`a`,{href:`https://game.aircoding.ai/app/`,target:`_blank`,rel:`noreferrer`,children:`Кабинет UMGT`}),(0,g.jsx)(`a`,{href:`https://game.aircoding.ai/app/checkout/subscription`,target:`_blank`,rel:`noreferrer`,children:`Оформить подписку`}),(0,g.jsx)(`a`,{href:`https://game.aircoding.ai/app/checkout/tokens`,target:`_blank`,rel:`noreferrer`,children:`Увеличить лимит`}),(0,g.jsx)(`a`,{href:`https://game.aircoding.ai/app/checkout/topup`,target:`_blank`,rel:`noreferrer`,children:`Пополнить баланс`})]}),(0,g.jsxs)(`form`,{onSubmit:O,className:`core-connect-form`,children:[e&&(0,g.jsx)(`h3`,{children:t?.connected?`Ключ подключения`:`Подключи свой аккаунт`}),(0,g.jsxs)(`label`,{children:[`Адрес ядра`,(0,g.jsx)(`input`,{type:`url`,required:!0,placeholder:`https://umgt.aircoding.ai`,value:r,onChange:e=>o(e.target.value),disabled:x})]}),(0,g.jsxs)(`label`,{children:[t?.connected?`Новый ключ UMGT`:`API-ключ UMGT`,(0,g.jsx)(`input`,{type:`password`,required:!0,autoComplete:`off`,placeholder:`umgt_…`,spellCheck:!1,value:u,onChange:e=>d(e.target.value),disabled:x})]}),(0,g.jsx)(`p`,{children:`Ключ передаётся ядру по защищённому соединению и не сохраняется в браузере. Работа AI расходует доступный лимит; генерация 3D оплачивается отдельно с рублёвого баланса по цене сервиса.`}),(0,g.jsx)(i,{tone:`primary`,disabled:x||!u||!r,children:t?.connected?`Заменить ключ`:`Подключить`})]}),(0,g.jsx)(i,{className:`core-account-logout`,type:`button`,disabled:x,onClick:()=>void D(async()=>{await s(`/core/logout`,`POST`,{}),n(void 0),w(void 0),d(``),window.dispatchEvent(new Event(`umgt-account-changed`))}),children:`Выйти из аккаунта Hub`})]})]})}export{x as CoreAccount};
@@ -1 +0,0 @@
1
- .video-reference{color:var(--text,#12142b);background:var(--surface,#fff);border:1px solid var(--border,#d9dcec);border-radius:18px;flex-shrink:0;margin:12px 0;overflow:hidden}.video-reference-toggle{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;align-items:center;gap:12px;padding:16px 20px;display:flex}.video-reference-toggle>b{font-size:16px}.video-reference-toggle>span:last-child{color:var(--muted,#5d628a);text-overflow:ellipsis;white-space:nowrap;max-width:40%;margin-left:auto;font-size:13px;overflow:hidden}.video-reference-body{flex-direction:column;gap:12px;max-height:75vh;padding:0 20px 20px;display:flex;overflow:auto}.video-reference-body>*{flex-shrink:0}.video-reference-body p{max-width:78ch;margin:0;line-height:1.6}.video-reference-body label{flex-direction:column;gap:8px;display:flex}.video-reference-body textarea{resize:vertical;border:1px solid var(--border,#d9dcec);width:100%;min-height:80px;color:inherit;background:var(--bg,#f5f6fb);border-radius:12px;padding:12px}.video-reference-body video{background:#12142b;border-radius:12px;align-self:center;max-width:100%;max-height:300px}.video-reference-body progress{width:100%;accent-color:var(--accent,#0c8c6c)}.video-actions{flex-wrap:wrap;gap:10px;display:flex}.video-reference-body button{cursor:pointer;border:1px solid var(--border,#d9dcec);color:inherit;background:var(--inset,#eef0f8);font:inherit;border-radius:12px;padding:10px 14px}.video-reference-body button:disabled{opacity:.45;cursor:default}.video-reference-body .video-delete{color:var(--danger,#b84c40);background:0 0;align-self:flex-start}.video-tools{border-left:4px solid var(--accent,#0c8c6c);background:var(--inset,#eef0f8);padding:12px 16px}.video-tools p{margin:8px 0}.video-notice,.video-reference-body small{color:var(--muted,#5d628a);font-size:13px}.video-analysis-progress{flex-direction:column;gap:8px;display:flex}.video-evidence{border-bottom:1px solid var(--border,#d9dcec);padding:16px 0}.video-evidence>div{flex-wrap:wrap;align-items:baseline;gap:8px;margin:8px 0;display:flex}.video-evidence em{font-size:12px}.video-error{color:var(--danger,#b84c40)}.video-idea-layout{flex-direction:column;flex:1;width:100%;min-height:0;display:flex}.video-idea-layout>.video-reference{margin:8px 24px}.video-idea-layout>.k-work{flex:1;min-height:250px}@media (width<=600px){.video-idea-layout>.video-reference{margin:8px}.video-reference-toggle{padding:14px 12px}.video-reference-toggle>span:last-child{display:none}.video-reference-body{padding:0 12px 16px}.video-actions>button{flex-grow:1}}