@profoundlogic/coderflow-server 0.4.4 → 0.4.6

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 (176) hide show
  1. package/dist/base-image/entrypoint.sh +2 -1
  2. package/dist/coder-server.js +1 -1
  3. package/dist/config.js +1 -1
  4. package/dist/lib/agent-keepalive.js +1 -1
  5. package/dist/lib/agent-models.js +1 -1
  6. package/dist/lib/api-keys.js +1 -1
  7. package/dist/lib/apiKeys.js +1 -1
  8. package/dist/lib/app-server-ports.js +1 -1
  9. package/dist/lib/auto-judge.js +1 -1
  10. package/dist/lib/automation-service.js +1 -0
  11. package/dist/lib/basic-auth.js +1 -1
  12. package/dist/lib/bindings.js +1 -0
  13. package/dist/lib/build-history.js +1 -1
  14. package/dist/lib/build-output-service.js +1 -1
  15. package/dist/lib/build-scheduler.js +1 -1
  16. package/dist/lib/build-service.js +1 -1
  17. package/dist/lib/ca-certificates.js +1 -1
  18. package/dist/lib/claude-oauth-refresh.js +1 -1
  19. package/dist/lib/cli/build.js +1 -1
  20. package/dist/lib/cli/config-command.js +1 -1
  21. package/dist/lib/cli/config.js +1 -1
  22. package/dist/lib/cli/create-user.js +1 -1
  23. package/dist/lib/cli/init.js +1 -1
  24. package/dist/lib/cli/jira.js +1 -1
  25. package/dist/lib/cli/license.js +1 -1
  26. package/dist/lib/cli/server-manager.js +1 -1
  27. package/dist/lib/config-migration.js +1 -1
  28. package/dist/lib/container-credential-sync.js +1 -1
  29. package/dist/lib/container-tokens.js +1 -1
  30. package/dist/lib/data-dir.js +1 -1
  31. package/dist/lib/deployment-history.js +1 -1
  32. package/dist/lib/deployment-service.js +1 -1
  33. package/dist/lib/docker-utils.js +1 -1
  34. package/dist/lib/email.js +1 -1
  35. package/dist/lib/emailTemplates.js +1 -1
  36. package/dist/lib/entitlement.js +1 -1
  37. package/dist/lib/fetch-utils.js +1 -1
  38. package/dist/lib/git-commit-details-route.js +1 -1
  39. package/dist/lib/git-history-diff-guardrails.js +1 -1
  40. package/dist/lib/git-provider-service.js +1 -1
  41. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  42. package/dist/lib/git-provider-setup/index.js +1 -1
  43. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  44. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  45. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  46. package/dist/lib/git-providers/github-app-provider.js +1 -1
  47. package/dist/lib/git-providers/index.js +1 -1
  48. package/dist/lib/git-providers/provider-factory.js +1 -1
  49. package/dist/lib/git-providers/provider-interface.js +1 -1
  50. package/dist/lib/github-urls.js +1 -1
  51. package/dist/lib/group-objective-linking.js +1 -1
  52. package/dist/lib/jira-client.js +1 -1
  53. package/dist/lib/judge-blinding.js +1 -1
  54. package/dist/lib/logger.js +1 -1
  55. package/dist/lib/migration-to-scoped-rbac.js +1 -0
  56. package/dist/lib/model-fetcher.js +1 -1
  57. package/dist/lib/notifications.js +1 -1
  58. package/dist/lib/objective-context.js +1 -1
  59. package/dist/lib/oidc-auth.js +1 -1
  60. package/dist/lib/oidc-device-flow.js +1 -1
  61. package/dist/lib/passwordTokens.js +1 -1
  62. package/dist/lib/permission-resolver.js +1 -0
  63. package/dist/lib/pin-cascade.js +1 -1
  64. package/dist/lib/provider-accounts.js +1 -1
  65. package/dist/lib/provider-oauth.js +1 -1
  66. package/dist/lib/provider-profile.js +1 -1
  67. package/dist/lib/provider-token-refresh.js +1 -1
  68. package/dist/lib/request-url.js +1 -1
  69. package/dist/lib/rewind.js +1 -1
  70. package/dist/lib/role-definitions.js +1 -0
  71. package/dist/lib/roles.js +1 -1
  72. package/dist/lib/secrets.js +1 -1
  73. package/dist/lib/setup-repo-git-auth.js +1 -1
  74. package/dist/lib/state-capture.js +1 -1
  75. package/dist/lib/static-files.js +1 -1
  76. package/dist/lib/task-name-format.js +1 -1
  77. package/dist/lib/task-name-generator.js +1 -1
  78. package/dist/lib/task-source-metadata.js +1 -0
  79. package/dist/lib/teams.js +1 -0
  80. package/dist/lib/user-git-oauth.js +1 -1
  81. package/dist/lib/user-git-tokens.js +1 -1
  82. package/dist/lib/users.js +1 -1
  83. package/dist/middleware/requireAuth.js +1 -1
  84. package/dist/middleware/requireInit.js +1 -1
  85. package/dist/middleware/requirePermission.js +1 -1
  86. package/dist/package-lock.json +211 -21
  87. package/dist/package.json +2 -1
  88. package/dist/playwright.config.js +1 -0
  89. package/dist/routes/apiKeys.js +1 -1
  90. package/dist/routes/auth-oidc.js +1 -1
  91. package/dist/routes/auth.js +1 -1
  92. package/dist/routes/automations.js +1 -0
  93. package/dist/routes/bindings.js +1 -0
  94. package/dist/routes/build.js +1 -1
  95. package/dist/routes/containers.js +1 -1
  96. package/dist/routes/deploy-task.js +1 -1
  97. package/dist/routes/environment-management.js +1 -1
  98. package/dist/routes/environments.js +1 -1
  99. package/dist/routes/external-skills.js +1 -1
  100. package/dist/routes/git-credentials.js +1 -1
  101. package/dist/routes/git-oauth.js +1 -1
  102. package/dist/routes/git-provider-setup.js +1 -1
  103. package/dist/routes/health.js +1 -1
  104. package/dist/routes/jira.js +1 -1
  105. package/dist/routes/objective-management.js +1 -1
  106. package/dist/routes/password.js +1 -1
  107. package/dist/routes/prompt.js +1 -1
  108. package/dist/routes/provider-auth.js +1 -1
  109. package/dist/routes/qa.js +1 -1
  110. package/dist/routes/roles.js +1 -0
  111. package/dist/routes/settings.js +1 -1
  112. package/dist/routes/skill-management.js +1 -1
  113. package/dist/routes/skills.js +1 -1
  114. package/dist/routes/tasks.js +1 -1
  115. package/dist/routes/teams.js +1 -0
  116. package/dist/routes/templates.js +1 -1
  117. package/dist/routes/test-task.js +1 -1
  118. package/dist/routes/test.js +1 -1
  119. package/dist/routes/users.js +1 -1
  120. package/dist/routes/visualizations.js +1 -1
  121. package/dist/scripts/create-user.js +1 -1
  122. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  123. package/dist/scripts/migrate-to-scoped-rbac.js +2 -0
  124. package/dist/start.js +1 -1
  125. package/dist/start.js.bak +1381 -0
  126. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  127. package/dist/web-ui/public/activity-feed.js +1 -1
  128. package/dist/web-ui/public/activity-formatters.js +1 -1
  129. package/dist/web-ui/public/agent-event-parser.js +1 -1
  130. package/dist/web-ui/public/app.js +1 -1
  131. package/dist/web-ui/public/approve-dialog.js +1 -1
  132. package/dist/web-ui/public/automation-links.js +1 -0
  133. package/dist/web-ui/public/automation-schedule.js +1 -0
  134. package/dist/web-ui/public/comments-widget.js +1 -1
  135. package/dist/web-ui/public/diff-utils.js +1 -1
  136. package/dist/web-ui/public/docs/_sidebar.md +1 -0
  137. package/dist/web-ui/public/docs/admin/automations.md +75 -0
  138. package/dist/web-ui/public/docs/admin/users-and-roles.md +14 -4
  139. package/dist/web-ui/public/environments.css +247 -125
  140. package/dist/web-ui/public/environments.html +346 -2
  141. package/dist/web-ui/public/environments.js +1 -1
  142. package/dist/web-ui/public/feedback-widget.css +42 -0
  143. package/dist/web-ui/public/feedback-widget.js +1 -1
  144. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  145. package/dist/web-ui/public/git-history.html +15 -0
  146. package/dist/web-ui/public/git-history.js +1 -1
  147. package/dist/web-ui/public/git-status.js +1 -1
  148. package/dist/web-ui/public/index.html +27 -0
  149. package/dist/web-ui/public/index.js +1 -1
  150. package/dist/web-ui/public/login.js +1 -1
  151. package/dist/web-ui/public/markdown-editor.js +1 -1
  152. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  153. package/dist/web-ui/public/modal-maximize.js +1 -1
  154. package/dist/web-ui/public/notifications.js +1 -1
  155. package/dist/web-ui/public/pr-dialog.js +1 -1
  156. package/dist/web-ui/public/roles.html +247 -0
  157. package/dist/web-ui/public/roles.js +1 -0
  158. package/dist/web-ui/public/server-health.js +1 -1
  159. package/dist/web-ui/public/settings.html +62 -0
  160. package/dist/web-ui/public/settings.js +1 -1
  161. package/dist/web-ui/public/setup-password.js +1 -1
  162. package/dist/web-ui/public/skills.html +15 -0
  163. package/dist/web-ui/public/skills.js +1 -1
  164. package/dist/web-ui/public/sse-client.js +1 -1
  165. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  166. package/dist/web-ui/public/styles.css +198 -161
  167. package/dist/web-ui/public/task.html +2 -2
  168. package/dist/web-ui/public/task.js +1 -1
  169. package/dist/web-ui/public/teams.html +285 -0
  170. package/dist/web-ui/public/teams.js +1 -0
  171. package/dist/web-ui/public/terminal.js +1 -1
  172. package/dist/web-ui/public/theme.js +1 -1
  173. package/dist/web-ui/public/users.html +87 -29
  174. package/dist/web-ui/public/users.js +1 -1
  175. package/dist/web-ui/public/variant-grouping.js +1 -1
  176. package/package.json +6 -3
@@ -1 +1 @@
1
- const _0x599850=_0x26bb;(function(_0x3644cb,_0x4abdee){const _0x14dd61=_0x26bb,_0x36fe18=_0x3644cb();while(!![]){try{const _0x874144=-parseInt(_0x14dd61(0x171))/0x1+parseInt(_0x14dd61(0x17c))/0x2*(parseInt(_0x14dd61(0x176))/0x3)+-parseInt(_0x14dd61(0x16d))/0x4+parseInt(_0x14dd61(0x163))/0x5+parseInt(_0x14dd61(0x17a))/0x6*(-parseInt(_0x14dd61(0x170))/0x7)+-parseInt(_0x14dd61(0x174))/0x8+parseInt(_0x14dd61(0x175))/0x9;if(_0x874144===_0x4abdee)break;else _0x36fe18['push'](_0x36fe18['shift']());}catch(_0x4a076c){_0x36fe18['push'](_0x36fe18['shift']());}}}(_0x3f8f,0x4893d));import{initTheme,mountThemeToggle}from'./theme.js';initTheme();const urlParams=new URLSearchParams(window[_0x599850(0x16a)][_0x599850(0x159)]),token=urlParams[_0x599850(0x14a)]('token'),loadingEl=document[_0x599850(0x15d)](_0x599850(0x179)),setupContentEl=document[_0x599850(0x15d)]('setup-content'),setupFormEl=document[_0x599850(0x15d)]('setup-form'),setupMessageEl=document['getElementById'](_0x599850(0x153)),userUsernameEl=document[_0x599850(0x15d)]('user-username'),userNameEl=document['getElementById'](_0x599850(0x160)),passwordInput=document[_0x599850(0x15d)](_0x599850(0x156)),confirmPasswordInput=document[_0x599850(0x15d)](_0x599850(0x14e)),submitButton=setupFormEl?.['querySelector'](_0x599850(0x15b));function showMessage(_0x9e5cf9,_0x2380a3=_0x599850(0x180)){const _0x2c6539=_0x599850;setupMessageEl[_0x2c6539(0x17f)]=_0x9e5cf9,setupMessageEl[_0x2c6539(0x157)]=_0x2c6539(0x151)+_0x2380a3+_0x2c6539(0x16b);}function hideMessage(){const _0x485f8b=_0x599850;setupMessageEl[_0x485f8b(0x157)]=_0x485f8b(0x153);}function showError(_0x412904){const _0x7b4670=_0x599850;loadingEl[_0x7b4670(0x149)]['remove'](_0x7b4670(0x165)),setupContentEl['style']['display']=_0x7b4670(0x15e),document[_0x7b4670(0x15d)]('user-info')[_0x7b4670(0x161)][_0x7b4670(0x17b)]=_0x7b4670(0x15a),setupFormEl[_0x7b4670(0x161)][_0x7b4670(0x17b)]=_0x7b4670(0x15a),showMessage(_0x412904,_0x7b4670(0x180));}async function validateToken(){const _0x2dd7c1=_0x599850;if(!token){showError(_0x2dd7c1(0x16e));return;}try{const _0x2efc1f=await fetch('/password/validate-token?token='+encodeURIComponent(token)),_0xd4d691=await _0x2efc1f[_0x2dd7c1(0x177)]();if(!_0xd4d691[_0x2dd7c1(0x182)]){showError(_0xd4d691['error']||'Invalid\x20or\x20expired\x20token.\x20Please\x20request\x20a\x20new\x20password\x20setup\x20link.');return;}loadingEl[_0x2dd7c1(0x149)]['remove'](_0x2dd7c1(0x165)),setupContentEl[_0x2dd7c1(0x161)]['display']=_0x2dd7c1(0x15e),userUsernameEl[_0x2dd7c1(0x17f)]=_0xd4d691[_0x2dd7c1(0x17e)]['username'],userNameEl[_0x2dd7c1(0x17f)]=_0xd4d691[_0x2dd7c1(0x17e)][_0x2dd7c1(0x14c)];const _0xc32d0=document[_0x2dd7c1(0x155)](_0x2dd7c1(0x164));_0xd4d691[_0x2dd7c1(0x167)]===_0x2dd7c1(0x15f)?_0xc32d0[_0x2dd7c1(0x17f)]=_0x2dd7c1(0x169):_0xc32d0['textContent']=_0x2dd7c1(0x168),passwordInput[_0x2dd7c1(0x147)]();}catch(_0x133251){console[_0x2dd7c1(0x180)]('Failed\x20to\x20validate\x20token:',_0x133251),showError(_0x2dd7c1(0x14d));}}async function handleSubmit(_0x27cf3b){const _0x2cc6ac=_0x599850;_0x27cf3b[_0x2cc6ac(0x14f)](),hideMessage();const _0x1209cc=passwordInput[_0x2cc6ac(0x172)],_0x37be5b=confirmPasswordInput[_0x2cc6ac(0x172)];if(_0x1209cc!==_0x37be5b){showMessage('Passwords\x20do\x20not\x20match','error'),confirmPasswordInput[_0x2cc6ac(0x147)]();return;}if(_0x1209cc[_0x2cc6ac(0x173)]<0x8){showMessage('Password\x20must\x20be\x20at\x20least\x208\x20characters\x20long',_0x2cc6ac(0x180)),passwordInput['focus']();return;}submitButton[_0x2cc6ac(0x16c)]=!![],submitButton['textContent']=_0x2cc6ac(0x158);try{const _0xfef1f3=await fetch(_0x2cc6ac(0x154),{'method':_0x2cc6ac(0x17d),'headers':{'Content-Type':_0x2cc6ac(0x166)},'body':JSON[_0x2cc6ac(0x150)]({'token':token,'password':_0x1209cc})}),_0x10a11e=await _0xfef1f3[_0x2cc6ac(0x177)]();if(!_0xfef1f3['ok'])throw new Error(_0x10a11e[_0x2cc6ac(0x180)]||_0x2cc6ac(0x181));showMessage(_0x2cc6ac(0x14b),'success'),setupFormEl[_0x2cc6ac(0x15f)](),setTimeout(()=>{const _0x49ec7c=_0x2cc6ac;window['location']['href']=_0x49ec7c(0x152);},0x7d0);}catch(_0x2f9035){console[_0x2cc6ac(0x180)](_0x2cc6ac(0x183),_0x2f9035),showMessage(_0x2f9035['message']||_0x2cc6ac(0x148),_0x2cc6ac(0x180)),submitButton['disabled']=![],submitButton['textContent']=_0x2cc6ac(0x178);}}setupFormEl&&setupFormEl[_0x599850(0x16f)](_0x599850(0x15c),handleSubmit);function _0x26bb(_0x3aa055,_0x51b479){_0x3aa055=_0x3aa055-0x147;const _0x3f8f88=_0x3f8f();let _0x26bbb1=_0x3f8f88[_0x3aa055];if(_0x26bb['JghaAL']===undefined){var _0x164540=function(_0x6642e7){const _0x2d2dd6='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x9e5cf9='',_0x2380a3='';for(let _0x412904=0x0,_0x2efc1f,_0xd4d691,_0xc32d0=0x0;_0xd4d691=_0x6642e7['charAt'](_0xc32d0++);~_0xd4d691&&(_0x2efc1f=_0x412904%0x4?_0x2efc1f*0x40+_0xd4d691:_0xd4d691,_0x412904++%0x4)?_0x9e5cf9+=String['fromCharCode'](0xff&_0x2efc1f>>(-0x2*_0x412904&0x6)):0x0){_0xd4d691=_0x2d2dd6['indexOf'](_0xd4d691);}for(let _0x133251=0x0,_0x27cf3b=_0x9e5cf9['length'];_0x133251<_0x27cf3b;_0x133251++){_0x2380a3+='%'+('00'+_0x9e5cf9['charCodeAt'](_0x133251)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2380a3);};_0x26bb['PZLHiD']=_0x164540,_0x26bb['fuiNzZ']={},_0x26bb['JghaAL']=!![];}const _0x199238=_0x3f8f88[0x0],_0x1c78c4=_0x3aa055+_0x199238,_0x507fd5=_0x26bb['fuiNzZ'][_0x1c78c4];return!_0x507fd5?(_0x26bbb1=_0x26bb['PZLHiD'](_0x26bbb1),_0x26bb['fuiNzZ'][_0x1c78c4]=_0x26bbb1):_0x26bbb1=_0x507fd5,_0x26bbb1;}function _0x3f8f(){const _0x22b12c=['rMfPBgvKihrVihzHBgLKyxrLihrVA2vUlIbqBgvHC2uGDhj5igfNywLUig9YignVBNrHy3qGEw91CIbHzg1PBMLZDhjHDg9YlG','y29UzMLYBs1WyxnZD29Yza','ChjLDMvUDerLzMf1Bhq','C3rYAw5NAwz5','C2v0DxaTBwvZC2fNzsa','l2XVz2LUlMH0BwW','C2v0DxaTBwvZC2fNzq','l3bHC3n3B3jKl3nLDhvW','CxvLCNLtzwXLy3rVCG','CgfZC3DVCMq','y2XHC3noyw1L','u2v0DgLUzYbWyxnZD29Yzc4UlG','C2vHCMnO','BM9Uzq','yNv0Dg9Uw3r5Cgu9iNn1yM1PDcjD','C3vIBwL0','z2v0rwXLBwvUDej5swq','yMXVy2S','CMvZzxq','DxnLCI1Uyw1L','C3r5Bgu','re9nq29UDgvUDeXVywrLza','ntC3odu1y2jNr2L6','lNnLDhvWlwHLywrLCIbW','DMLZAwjSzq','yxbWBgLJyxrPB24VANnVBG','DhLWzq','q3jLyxrLigeGC2vJDxjLihbHC3n3B3jKigzVCIb5B3vYigfJy291BNq','uMvZzxqGEw91CIbWyxnZD29Yza','Bg9JyxrPB24','ihzPC2LIBgu','zgLZywjSzwq','odG0odC2u2zevKHW','tM8GDg9Rzw4GChjVDMLKzwqUifbSzwfZzsbJAgvJAYb0AguGBgLUAYb5B3uGCMvJzwL2zwqU','ywrKrxzLBNrmAxn0zw5LCG','mtrRsujtyuu','nda5mtGZzxv2qMve','DMfSDwu','BgvUz3rO','mJm5odG0ohHbBuzqBa','odK1otK3n2vRyKz3sG','m1HHEgjoqG','ANnVBG','u2v0ifbHC3n3B3jK','Bg9HzgLUzW','odmWmJK4v2TLzMvI','zgLZCgXHEq','nZG2mZu0vhzhwNzV','ue9tva','DxnLCG','Dgv4DenVBNrLBNq','zxjYB3i','rMfPBgvKihrVihnLDcbWyxnZD29Yza','DMfSAwq','rMfPBgvKihrVihnLDcbWyxnZD29YzdO','zM9JDxm','rMfPBgvKihrVihnLDcbWyxnZD29Yzc4GugXLyxnLihrYEsbHz2fPBI4','y2XHC3nmAxn0','z2v0','ugfZC3DVCMqGC2v0ihn1y2nLC3nMDwXSEseGuMvKAxjLy3rPBMCGDg8GBg9NAw4UlI4','BMfTzq'];_0x3f8f=function(){return _0x22b12c;};return _0x3f8f();}validateToken(),document[_0x599850(0x16f)](_0x599850(0x162),()=>{mountThemeToggle();});
1
+ function _0x57ed(_0x14482d,_0x1a365d){_0x14482d=_0x14482d-0x150;const _0x19716c=_0x1971();let _0x57ed21=_0x19716c[_0x14482d];if(_0x57ed['KxfaFz']===undefined){var _0x5cc30e=function(_0x24a646){const _0x1789ef='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5cd8a3='',_0x3d7ece='';for(let _0x3bcb78=0x0,_0x526fd2,_0x20d587,_0x772389=0x0;_0x20d587=_0x24a646['charAt'](_0x772389++);~_0x20d587&&(_0x526fd2=_0x3bcb78%0x4?_0x526fd2*0x40+_0x20d587:_0x20d587,_0x3bcb78++%0x4)?_0x5cd8a3+=String['fromCharCode'](0xff&_0x526fd2>>(-0x2*_0x3bcb78&0x6)):0x0){_0x20d587=_0x1789ef['indexOf'](_0x20d587);}for(let _0x4bbb7b=0x0,_0x1fc6ef=_0x5cd8a3['length'];_0x4bbb7b<_0x1fc6ef;_0x4bbb7b++){_0x3d7ece+='%'+('00'+_0x5cd8a3['charCodeAt'](_0x4bbb7b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3d7ece);};_0x57ed['bbEQws']=_0x5cc30e,_0x57ed['RwuHGg']={},_0x57ed['KxfaFz']=!![];}const _0x1896c6=_0x19716c[0x0],_0x6741a6=_0x14482d+_0x1896c6,_0xbc1f9b=_0x57ed['RwuHGg'][_0x6741a6];return!_0xbc1f9b?(_0x57ed21=_0x57ed['bbEQws'](_0x57ed21),_0x57ed['RwuHGg'][_0x6741a6]=_0x57ed21):_0x57ed21=_0xbc1f9b,_0x57ed21;}const _0x3c5768=_0x57ed;(function(_0x251396,_0xac1308){const _0x254dd7=_0x57ed,_0x5b5837=_0x251396();while(!![]){try{const _0x48b904=-parseInt(_0x254dd7(0x184))/0x1*(parseInt(_0x254dd7(0x17e))/0x2)+-parseInt(_0x254dd7(0x17c))/0x3+parseInt(_0x254dd7(0x163))/0x4+parseInt(_0x254dd7(0x15c))/0x5*(parseInt(_0x254dd7(0x161))/0x6)+parseInt(_0x254dd7(0x180))/0x7+-parseInt(_0x254dd7(0x166))/0x8+parseInt(_0x254dd7(0x175))/0x9;if(_0x48b904===_0xac1308)break;else _0x5b5837['push'](_0x5b5837['shift']());}catch(_0x18480){_0x5b5837['push'](_0x5b5837['shift']());}}}(_0x1971,0x194c1));import{initTheme,mountThemeToggle}from'./theme.js';initTheme();const urlParams=new URLSearchParams(window[_0x3c5768(0x16e)]['search']),token=urlParams[_0x3c5768(0x15e)](_0x3c5768(0x160)),loadingEl=document[_0x3c5768(0x189)]('loading'),setupContentEl=document[_0x3c5768(0x189)](_0x3c5768(0x178)),setupFormEl=document[_0x3c5768(0x189)]('setup-form'),setupMessageEl=document[_0x3c5768(0x189)](_0x3c5768(0x185)),userUsernameEl=document[_0x3c5768(0x189)](_0x3c5768(0x158)),userNameEl=document[_0x3c5768(0x189)](_0x3c5768(0x156)),passwordInput=document['getElementById'](_0x3c5768(0x181)),confirmPasswordInput=document[_0x3c5768(0x189)]('confirm-password'),submitButton=setupFormEl?.['querySelector'](_0x3c5768(0x153));function showMessage(_0x5cd8a3,_0x3d7ece=_0x3c5768(0x174)){const _0x16f5e6=_0x3c5768;setupMessageEl[_0x16f5e6(0x162)]=_0x5cd8a3,setupMessageEl['className']='setup-message\x20'+_0x3d7ece+'\x20visible';}function _0x1971(){const _0x15f890=['rMfPBgvKihrVihnLDcbWyxnZD29Yzc4GugXLyxnLihrYEsbHz2fPBI4','mta4ntC4nfHdBu5jDq','DxnLCI1PBMzV','C3vIBwL0','DMfSAwq','yxbWBgLJyxrPB24VANnVBG','BgvUz3rO','zgLZywjSzwq','rMfPBgvKihrVihzHBgLKyxrLihrVA2vUlIbqBgvHC2uGDhj5igfNywLUig9YignVBNrHy3qGEw91CIbHzg1PBMLZDhjHDg9YlG','Bg9JyxrPB24','zgLZCgXHEq','DhLWzq','rMfPBgvKihrVihnLDcbWyxnZD29YzdO','ugfZC3DVCMqGBxvZDcbIzsbHDcbSzwfZDca4ignOyxjHy3rLCNmGBg9UzW','rMfPBgvKihrVihzHBgLKyxrLihrVA2vUoG','zxjYB3i','mZK3nZu1Aw1sB2vJ','BM9Uzq','CMvTB3zL','C2v0DxaTy29UDgvUDa','CMvZzxq','zM9JDxm','DMfSDwu','ndG2mte3DvnRBu1y','yMXVy2S','otGZndHYyuHzsNK','u2v0ifbHC3n3B3jK','ntyYotmZyMLrD1j5','CgfZC3DVCMq','ugfZC3DVCMqGC2v0ihn1y2nLC3nMDwXSEseGuMvKAxjLy3rPBMCGDg8GBg9NAw4UlI4','re9nq29UDgvUDeXVywrLza','mxfKsgvIra','C2v0DxaTBwvZC2fNzq','ANnVBG','BMfTzq','DMLZAwjSzq','z2v0rwXLBwvUDej5swq','rMfPBgvKihrVihnLDcbWyxnZD29Yza','DxnLCG','C3vJy2vZCW','l3bHC3n3B3jKl3nLDhvW','y2XHC3nmAxn0','C3rYAw5NAwz5','l2XVz2LUlMH0BwW','yNv0Dg9Uw3r5Cgu9iNn1yM1PDcjD','sw52ywXPzcbVCIbLEhbPCMvKihrVA2vUlIbqBgvHC2uGCMvXDwvZDcbHig5LDYbWyxnZD29YzcbZzxr1CcbSAw5RlG','BwvZC2fNzq','DxnLCI1Uyw1L','u2v0DgLUzYbWyxnZD29Yzc4UlG','DxnLCI11C2vYBMfTzq','ugfZC3DVCMrZigrVig5VDcbTyxrJAa','CxvLCNLtzwXLy3rVCG','C3r5Bgu','mJy3nZyWEvzNv21g','ywrKrxzLBNrmAxn0zw5LCG','z2v0','lNnLDhvWlwHLywrLCIbW','Dg9Rzw4','mtHhyM1wveq','Dgv4DenVBNrLBNq','nJyXmtmYtKDPyK13','AhjLzG'];_0x1971=function(){return _0x15f890;};return _0x1971();}function hideMessage(){setupMessageEl['className']='setup-message';}function showError(_0x3bcb78){const _0x43812e=_0x3c5768;loadingEl[_0x43812e(0x150)]['remove'](_0x43812e(0x188)),setupContentEl['style'][_0x43812e(0x16f)]='block',document[_0x43812e(0x189)](_0x43812e(0x167))[_0x43812e(0x15b)][_0x43812e(0x16f)]=_0x43812e(0x176),setupFormEl['style']['display']=_0x43812e(0x176),showMessage(_0x3bcb78,_0x43812e(0x174));}async function validateToken(){const _0x129bf5=_0x3c5768;if(!token){showError('No\x20token\x20provided.\x20Please\x20check\x20the\x20link\x20you\x20received.');return;}try{const _0x526fd2=await fetch('/password/validate-token?token='+encodeURIComponent(token)),_0x20d587=await _0x526fd2[_0x129bf5(0x186)]();if(!_0x20d587[_0x129bf5(0x169)]){showError(_0x20d587[_0x129bf5(0x174)]||_0x129bf5(0x154));return;}loadingEl[_0x129bf5(0x150)][_0x129bf5(0x177)](_0x129bf5(0x188)),setupContentEl[_0x129bf5(0x15b)][_0x129bf5(0x16f)]=_0x129bf5(0x17d),userUsernameEl['textContent']=_0x20d587['user']['username'],userNameEl[_0x129bf5(0x162)]=_0x20d587[_0x129bf5(0x18b)][_0x129bf5(0x187)];const _0x772389=document[_0x129bf5(0x15a)](_0x129bf5(0x15f));_0x20d587[_0x129bf5(0x170)]===_0x129bf5(0x179)?_0x772389[_0x129bf5(0x162)]='Reset\x20your\x20password':_0x772389[_0x129bf5(0x162)]='Create\x20a\x20secure\x20password\x20for\x20your\x20account',passwordInput[_0x129bf5(0x17a)]();}catch(_0x4bbb7b){console['error'](_0x129bf5(0x173),_0x4bbb7b),showError(_0x129bf5(0x16d));}}async function handleSubmit(_0x1fc6ef){const _0x5d5e64=_0x3c5768;_0x1fc6ef['preventDefault'](),hideMessage();const _0x30018a=passwordInput[_0x5d5e64(0x17b)],_0x4dccb3=confirmPasswordInput[_0x5d5e64(0x17b)];if(_0x30018a!==_0x4dccb3){showMessage(_0x5d5e64(0x159),_0x5d5e64(0x174)),confirmPasswordInput[_0x5d5e64(0x17a)]();return;}if(_0x30018a[_0x5d5e64(0x16b)]<0x8){showMessage(_0x5d5e64(0x172),_0x5d5e64(0x174)),passwordInput['focus']();return;}submitButton[_0x5d5e64(0x16c)]=!![],submitButton['textContent']=_0x5d5e64(0x157);try{const _0x24031b=await fetch(_0x5d5e64(0x18d),{'method':'POST','headers':{'Content-Type':_0x5d5e64(0x16a)},'body':JSON[_0x5d5e64(0x151)]({'token':token,'password':_0x30018a})}),_0x55a8f5=await _0x24031b['json']();if(!_0x24031b['ok'])throw new Error(_0x55a8f5[_0x5d5e64(0x174)]||_0x5d5e64(0x18a));showMessage(_0x5d5e64(0x182),_0x5d5e64(0x18c)),setupFormEl[_0x5d5e64(0x179)](),setTimeout(()=>{const _0x39419c=_0x5d5e64;window[_0x39419c(0x16e)][_0x39419c(0x164)]=_0x39419c(0x152);},0x7d0);}catch(_0xe1a67){console[_0x5d5e64(0x174)](_0x5d5e64(0x171),_0xe1a67),showMessage(_0xe1a67[_0x5d5e64(0x155)]||_0x5d5e64(0x165),'error'),submitButton[_0x5d5e64(0x16c)]=![],submitButton[_0x5d5e64(0x162)]=_0x5d5e64(0x17f);}}setupFormEl&&setupFormEl[_0x3c5768(0x15d)](_0x3c5768(0x168),handleSubmit);validateToken(),document[_0x3c5768(0x15d)](_0x3c5768(0x183),()=>{mountThemeToggle();});
@@ -67,6 +67,15 @@
67
67
  </svg>
68
68
  <span class="option-text">Users</span>
69
69
  </button>
70
+ <button type="button" class="dropdown-item admin-menu-item" onclick="window.location.href='teams.html'">
71
+ <svg class="option-icon icon-teams" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
72
+ <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
73
+ <circle cx="9" cy="7" r="4"></circle>
74
+ <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
75
+ <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
76
+ </svg>
77
+ <span class="option-text">Teams</span>
78
+ </button>
70
79
  <button type="button" class="dropdown-item admin-menu-item" onclick="window.location.href='environments.html'">
71
80
  <svg class="option-icon icon-environments" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
72
81
  <circle cx="12" cy="12" r="10"></circle>
@@ -75,6 +84,12 @@
75
84
  </svg>
76
85
  <span class="option-text">Environments</span>
77
86
  </button>
87
+ <button type="button" class="dropdown-item admin-menu-item" onclick="window.location.href='roles.html'">
88
+ <svg class="option-icon icon-roles" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
89
+ <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>
90
+ </svg>
91
+ <span class="option-text">Roles</span>
92
+ </button>
78
93
  <button type="button" class="dropdown-item admin-menu-item" onclick="window.location.href='settings.html'">
79
94
  <svg class="option-icon icon-server-settings" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
80
95
  <line x1="4" y1="21" x2="4" y2="14"></line>