@profoundlogic/coderflow-server 0.3.0 → 0.3.2

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 (149) hide show
  1. package/dist/base-image/agent-wrapper.sh +7 -8
  2. package/dist/coder-server.js +1 -1
  3. package/dist/config/skill-catalog.json +9 -0
  4. package/dist/config.js +1 -1
  5. package/dist/lib/agent-keepalive.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/basic-auth.js +1 -1
  11. package/dist/lib/build-history.js +1 -1
  12. package/dist/lib/build-output-service.js +1 -1
  13. package/dist/lib/build-scheduler.js +1 -1
  14. package/dist/lib/build-service.js +1 -1
  15. package/dist/lib/ca-certificates.js +1 -1
  16. package/dist/lib/claude-oauth-refresh.js +1 -1
  17. package/dist/lib/cli/build.js +1 -1
  18. package/dist/lib/cli/config-command.js +1 -1
  19. package/dist/lib/cli/config.js +1 -1
  20. package/dist/lib/cli/create-user.js +1 -1
  21. package/dist/lib/cli/init.js +1 -1
  22. package/dist/lib/cli/jira.js +1 -1
  23. package/dist/lib/cli/license.js +1 -1
  24. package/dist/lib/cli/server-manager.js +1 -1
  25. package/dist/lib/container-credential-sync.js +1 -0
  26. package/dist/lib/container-tokens.js +1 -1
  27. package/dist/lib/data-dir.js +1 -1
  28. package/dist/lib/deployment-history.js +1 -1
  29. package/dist/lib/deployment-service.js +1 -1
  30. package/dist/lib/docker-utils.js +1 -1
  31. package/dist/lib/email.js +1 -1
  32. package/dist/lib/emailTemplates.js +1 -1
  33. package/dist/lib/entitlement.js +1 -1
  34. package/dist/lib/fetch-utils.js +1 -1
  35. package/dist/lib/git-commit-details-route.js +1 -1
  36. package/dist/lib/git-history-diff-guardrails.js +1 -1
  37. package/dist/lib/git-provider-service.js +1 -1
  38. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  39. package/dist/lib/git-provider-setup/index.js +1 -1
  40. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  41. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  42. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  43. package/dist/lib/git-providers/github-app-provider.js +1 -1
  44. package/dist/lib/git-providers/index.js +1 -1
  45. package/dist/lib/git-providers/provider-factory.js +1 -1
  46. package/dist/lib/git-providers/provider-interface.js +1 -1
  47. package/dist/lib/github-urls.js +1 -1
  48. package/dist/lib/group-objective-linking.js +1 -1
  49. package/dist/lib/jira-client.js +1 -1
  50. package/dist/lib/judge-blinding.js +1 -1
  51. package/dist/lib/logger.js +1 -1
  52. package/dist/lib/model-fetcher.js +1 -1
  53. package/dist/lib/notifications.js +1 -1
  54. package/dist/lib/oidc-auth.js +1 -1
  55. package/dist/lib/oidc-device-flow.js +1 -1
  56. package/dist/lib/passwordTokens.js +1 -1
  57. package/dist/lib/pin-cascade.js +1 -1
  58. package/dist/lib/provider-accounts.js +1 -1
  59. package/dist/lib/provider-oauth.js +1 -1
  60. package/dist/lib/provider-profile.js +1 -1
  61. package/dist/lib/provider-token-refresh.js +1 -1
  62. package/dist/lib/request-url.js +1 -1
  63. package/dist/lib/rewind.js +1 -1
  64. package/dist/lib/roles.js +1 -1
  65. package/dist/lib/secrets.js +1 -1
  66. package/dist/lib/setup-repo-git-auth.js +1 -1
  67. package/dist/lib/state-capture.js +1 -1
  68. package/dist/lib/static-files.js +1 -1
  69. package/dist/lib/task-name-generator.js +1 -1
  70. package/dist/lib/user-git-oauth.js +1 -1
  71. package/dist/lib/user-git-tokens.js +1 -1
  72. package/dist/lib/users.js +1 -1
  73. package/dist/middleware/requireAuth.js +1 -1
  74. package/dist/middleware/requireInit.js +1 -1
  75. package/dist/middleware/requirePermission.js +1 -1
  76. package/dist/package.json +1 -1
  77. package/dist/routes/apiKeys.js +1 -1
  78. package/dist/routes/auth-oidc.js +1 -1
  79. package/dist/routes/auth.js +1 -1
  80. package/dist/routes/build.js +1 -1
  81. package/dist/routes/containers.js +1 -1
  82. package/dist/routes/deploy-task.js +1 -1
  83. package/dist/routes/environment-management.js +1 -1
  84. package/dist/routes/environments.js +1 -1
  85. package/dist/routes/external-skills.js +1 -1
  86. package/dist/routes/git-credentials.js +1 -1
  87. package/dist/routes/git-oauth.js +1 -1
  88. package/dist/routes/git-provider-setup.js +1 -1
  89. package/dist/routes/health.js +1 -1
  90. package/dist/routes/jira.js +1 -1
  91. package/dist/routes/objective-management.js +1 -1
  92. package/dist/routes/password.js +1 -1
  93. package/dist/routes/prompt.js +1 -1
  94. package/dist/routes/provider-auth.js +1 -1
  95. package/dist/routes/qa.js +1 -1
  96. package/dist/routes/settings.js +1 -1
  97. package/dist/routes/skill-management.js +1 -1
  98. package/dist/routes/skills.js +1 -1
  99. package/dist/routes/tasks.js +1 -1
  100. package/dist/routes/templates.js +1 -1
  101. package/dist/routes/test-task.js +1 -1
  102. package/dist/routes/test.js +1 -1
  103. package/dist/routes/users.js +1 -1
  104. package/dist/routes/visualizations.js +1 -1
  105. package/dist/scripts/create-user.js +1 -1
  106. package/dist/shipped-skills/environment-templates/SKILL.md +32 -109
  107. package/dist/start.js +1 -1
  108. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  109. package/dist/web-ui/public/activity-feed.js +1 -1
  110. package/dist/web-ui/public/activity-formatters.js +1 -1
  111. package/dist/web-ui/public/agent-event-parser.js +1 -1
  112. package/dist/web-ui/public/app.js +1 -1
  113. package/dist/web-ui/public/approve-dialog.js +1 -1
  114. package/dist/web-ui/public/comments-widget.js +1 -1
  115. package/dist/web-ui/public/diff-utils.js +1 -1
  116. package/dist/web-ui/public/docs/_sidebar.md +1 -0
  117. package/dist/web-ui/public/docs/admin/jira.md +156 -0
  118. package/dist/web-ui/public/docs/admin/skills.md +1 -1
  119. package/dist/web-ui/public/docs/tasks/creating-tasks.md +14 -0
  120. package/dist/web-ui/public/environments.html +24 -1
  121. package/dist/web-ui/public/environments.js +1 -1
  122. package/dist/web-ui/public/feedback-widget.js +1 -1
  123. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  124. package/dist/web-ui/public/git-history.js +1 -1
  125. package/dist/web-ui/public/git-status.js +1 -1
  126. package/dist/web-ui/public/index.js +1 -1
  127. package/dist/web-ui/public/login.js +1 -1
  128. package/dist/web-ui/public/markdown-editor.js +1 -1
  129. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  130. package/dist/web-ui/public/modal-maximize.js +1 -1
  131. package/dist/web-ui/public/notifications.js +1 -1
  132. package/dist/web-ui/public/pr-dialog.js +1 -0
  133. package/dist/web-ui/public/server-health.js +1 -1
  134. package/dist/web-ui/public/settings.js +1 -1
  135. package/dist/web-ui/public/setup-password.js +1 -1
  136. package/dist/web-ui/public/skills.css +29 -0
  137. package/dist/web-ui/public/skills.html +15 -0
  138. package/dist/web-ui/public/skills.js +1 -1
  139. package/dist/web-ui/public/sse-client.js +1 -1
  140. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  141. package/dist/web-ui/public/styles.css +137 -0
  142. package/dist/web-ui/public/task.html +27 -0
  143. package/dist/web-ui/public/task.js +1 -1
  144. package/dist/web-ui/public/terminal.js +1 -1
  145. package/dist/web-ui/public/theme.js +1 -1
  146. package/dist/web-ui/public/users.html +1 -1
  147. package/dist/web-ui/public/users.js +1 -1
  148. package/dist/web-ui/public/variant-grouping.js +1 -1
  149. package/package.json +1 -1
@@ -1 +1 @@
1
- const _0x5a25b0=_0x4aa6;(function(_0x317ca3,_0x504fd2){const _0x1f5acf=_0x4aa6,_0x92091d=_0x317ca3();while(!![]){try{const _0x58f7f8=-parseInt(_0x1f5acf(0xfc))/0x1*(-parseInt(_0x1f5acf(0x11c))/0x2)+-parseInt(_0x1f5acf(0xf4))/0x3*(parseInt(_0x1f5acf(0xd4))/0x4)+parseInt(_0x1f5acf(0x10e))/0x5+parseInt(_0x1f5acf(0x108))/0x6*(parseInt(_0x1f5acf(0xe7))/0x7)+-parseInt(_0x1f5acf(0xfd))/0x8*(-parseInt(_0x1f5acf(0x106))/0x9)+parseInt(_0x1f5acf(0xd9))/0xa+-parseInt(_0x1f5acf(0xe5))/0xb;if(_0x58f7f8===_0x504fd2)break;else _0x92091d['push'](_0x92091d['shift']());}catch(_0x1fa1b7){_0x92091d['push'](_0x92091d['shift']());}}}(_0x8514,0x7b059));const ports=new Set();let eventSource=null,currentUserId=null,reconnectTimeout=null,reconnectAttempts=0x0;const MAX_RECONNECT_DELAY=0x7530,taskStreams=new Map(),TASK_STREAM_EVENTS=[_0x5a25b0(0x102),_0x5a25b0(0xd6),_0x5a25b0(0xe2),_0x5a25b0(0x113),_0x5a25b0(0xd8),_0x5a25b0(0x117),_0x5a25b0(0x110)];function connect(_0x5622d2){const _0x3dc731=_0x5a25b0;eventSource&&currentUserId!==_0x5622d2&&(eventSource[_0x3dc731(0x11b)](),eventSource=null);if(eventSource&&eventSource[_0x3dc731(0x10a)]!==EventSource['CLOSED'])return;currentUserId=_0x5622d2;const _0x1acabf=_0x5622d2&&_0x5622d2!=='me'?_0x3dc731(0xe4)+_0x5622d2:'';try{eventSource=new EventSource(_0x3dc731(0x104)+_0x1acabf),eventSource['addEventListener'](_0x3dc731(0x11a),_0x12f668=>{const _0x53ecc2=_0x3dc731;broadcast({'type':'snapshot','data':_0x12f668[_0x53ecc2(0x10d)]}),reconnectAttempts=0x0;}),eventSource[_0x3dc731(0xe1)](_0x3dc731(0x102),_0x138342=>{const _0x3a1687=_0x3dc731;broadcast({'type':_0x3a1687(0x102),'data':_0x138342[_0x3a1687(0x10d)]});}),eventSource[_0x3dc731(0xe1)](_0x3dc731(0x10f),_0x40f060=>{const _0x1c4b80=_0x3dc731;broadcast({'type':_0x1c4b80(0x10f),'data':_0x40f060[_0x1c4b80(0x10d)]});}),eventSource[_0x3dc731(0xe1)]('new-task',_0x157946=>{const _0x3feabd=_0x3dc731;broadcast({'type':_0x3feabd(0xe8),'data':_0x157946[_0x3feabd(0x10d)]});}),eventSource[_0x3dc731(0xe1)](_0x3dc731(0x109),_0x2a0bda=>{const _0x30a605=_0x3dc731;broadcast({'type':'queue-position','data':_0x2a0bda[_0x30a605(0x10d)]});}),eventSource[_0x3dc731(0xe1)](_0x3dc731(0xe6),()=>{const _0x560c33=_0x3dc731;broadcast({'type':_0x560c33(0xeb)}),reconnectAttempts=0x0;}),eventSource[_0x3dc731(0xe1)](_0x3dc731(0x112),_0x39d8c1=>{const _0x5afa8a=_0x3dc731;console[_0x5afa8a(0x112)](_0x5afa8a(0xf6),_0x39d8c1),broadcast({'type':_0x5afa8a(0x112),'error':'Connection\x20error'}),eventSource&&(eventSource[_0x5afa8a(0x11b)](),eventSource=null),scheduleReconnect();});}catch(_0x53f4c1){console[_0x3dc731(0x112)](_0x3dc731(0xde),_0x53f4c1),broadcast({'type':_0x3dc731(0x112),'error':_0x53f4c1[_0x3dc731(0xea)]}),scheduleReconnect();}}function _0x8514(){const _0x2128b3=['p3vZzxjjzd0','mtm1mdy1ntL1shDhvKy','B3bLBG','nJu5otzitwDzv0q','BMv3lxrHC2S','w1ntrsbxB3jRzxjDifbVCNqGBwvZC2fNzsbLCNjVCJO','BwvZC2fNzq','y29UBMvJDgvK','w1ntrsbxB3jRzxjDifnJAgvKDwXPBMCGDgfZAYbZDhjLyw0GCMvJB25Uzwn0igzVCIa','q0Xpu0ve','B25TzxnZywDLzxjYB3i','C3rHCNq','BxmGkgf0DgvTChqG','C3vIC2nYAwjLvgfZAW','C2L6zq','t1bftG','mZy0mZqXwwLdDxzu','ChvZAa','w1ntrsbxB3jRzxjDienVBM5Ly3rPB24GzxjYB3i6','l3rHC2TZlW','zM9YrwfJAa','B25TzxnZywDL','Bg9N','DgfZAZPJB25Uzwn0zwq','mtrowM5PwKW','mtm1ndrUBxLRswu','C3rYAw5NAwz5','zxzLBNrtB3vYy2u','zgvSzxrL','q29UBMvJDgLVBIbLCNjVCG','ywn0AxzPDhK','w1ntrsbxB3jRzxjDifbVCNqGzgLZy29UBMvJDgvKlIbuB3rHBcbWB3j0CZOG','l3rHC2TZl3vWzgf0zxm','CMvJB25Uzwn0vgLTzw91Da','mJK2mwzTq09bEq','DgfZAZO','mtiWwezbzw9R','CxvLDwuTCg9ZAxrPB24','CMvHzhLtDgf0zq','DgfZAZPLCNjVCG','w1ntrsbxB3jRzxjDiezHAwXLzcb0BYbJCMvHDguGDgfZAYbfDMvUDfnVDxjJzsbMB3iG','zgf0yq','otyWodK1vvr3B21p','C3rHDhvZ','y29TCgXLDgu','w1ntrsbxB3jRzxjDie5Vig1VCMuGy29UBMvJDgvKihbVCNrZlcbJBg9ZAw5Nifntrq','zxjYB3i','C3vTBwfYEq','CMvJB25Uzwn0qxr0zw1WDhm','w1ntrsbxB3jRzxjDiezHAwXLzcb0BYbZzw5KihrVihbVCNqSihjLBw92Aw5NoG','l3n0CMvHBq','yxbWlxnLCNzLCI1ZDgf0Dxm','B25JB25Uzwn0','BwLU','C25HChnOB3q','y2XVC2u','ntaYmtbeBvj6AeO','w1ntrsbxB3jRzxjDifvUA25VD24Gywn0Aw9UoG','C2v0','AgfZ','oeLsEfvPAW','C3vIC2nYAwjLzfbVCNrZ','Bg9NCW','y2HHBMDLrMLSDgvY','y2HHBMDLzc1MAwXLCW','nJG1ndu0menryNP3Eq','ywrK','D2fYBG','Cg93','w1ntrsbxB3jRzxjDie5LDYbWB3j0ignVBM5Ly3rLzc4Gvg90ywWGCg9YDhm6ia','w1ntrsbxB3jRzxjDiezHAwXLzcb0BYbJCMvHDguGrxzLBNrtB3vYy2u6','Cg9ZDe1LC3nHz2u','z2v0','ywrKrxzLBNrmAxn0zw5LCG','Bwv0ywrHDge','BgvUz3rO'];_0x8514=function(){return _0x2128b3;};return _0x8514();}function scheduleReconnect(){const _0x3041a2=_0x5a25b0;reconnectTimeout&&clearTimeout(reconnectTimeout);if(ports['size']===0x0)return;const _0xdda988=Math[_0x3041a2(0x119)](0x3e8*Math['pow'](0x2,reconnectAttempts),MAX_RECONNECT_DELAY);reconnectAttempts++,console[_0x3041a2(0xfa)]('[SSE\x20Worker]\x20Scheduling\x20reconnect\x20in\x20'+_0xdda988+_0x3041a2(0xf0)+reconnectAttempts+')'),reconnectTimeout=setTimeout(()=>{const _0x517577=_0x3041a2;ports[_0x517577(0xf2)]>0x0&&connect(currentUserId);},_0xdda988);}function broadcast(_0x172121){const _0x1dedd6=_0x5a25b0,_0xa64818=[];ports[_0x1dedd6(0xf8)](_0x431eb7=>{const _0x2b8f77=_0x1dedd6;try{_0x431eb7['postMessage'](_0x172121);}catch(_0x26f38d){console[_0x2b8f77(0xdb)](_0x2b8f77(0x115),_0x26f38d),_0xa64818[_0x2b8f77(0xf5)](_0x431eb7);}}),_0xa64818[_0x1dedd6(0xe3)]>0x0&&cleanUpDeadPorts(_0xa64818),ports[_0x1dedd6(0xf2)]===0x0&&eventSource&&(console[_0x1dedd6(0xfa)](_0x1dedd6(0x111)),eventSource['close'](),eventSource=null,reconnectTimeout&&(clearTimeout(reconnectTimeout),reconnectTimeout=null));}function subscribeTask(_0x91f274,_0x11e073){const _0x472d46=_0x5a25b0;let _0x4ad85d=taskStreams[_0x472d46(0xe0)](_0x11e073);!_0x4ad85d&&(_0x4ad85d={'eventSource':null,'reconnectTimeout':null,'reconnectAttempts':0x0,'subscribedPorts':new Set()},taskStreams[_0x472d46(0x11e)](_0x11e073,_0x4ad85d));_0x4ad85d[_0x472d46(0xd5)]['add'](_0x91f274);if(!_0x4ad85d[_0x472d46(0xff)]||_0x4ad85d['eventSource']['readyState']===EventSource[_0x472d46(0xed)])connectTaskStream(_0x11e073);else{if(_0x4ad85d['eventSource'][_0x472d46(0x10a)]===EventSource[_0x472d46(0xf3)])try{_0x91f274[_0x472d46(0xdf)]({'type':_0x472d46(0xfb),'taskId':_0x11e073});}catch(_0x550502){}}}function _0x4aa6(_0x44b711,_0x215b35){_0x44b711=_0x44b711-0xd3;const _0x8514da=_0x8514();let _0x4aa6d6=_0x8514da[_0x44b711];if(_0x4aa6['VWhQCn']===undefined){var _0x570eae=function(_0x210725){const _0x583751='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5622d2='',_0x1acabf='';for(let _0x12f668=0x0,_0x138342,_0x40f060,_0x157946=0x0;_0x40f060=_0x210725['charAt'](_0x157946++);~_0x40f060&&(_0x138342=_0x12f668%0x4?_0x138342*0x40+_0x40f060:_0x40f060,_0x12f668++%0x4)?_0x5622d2+=String['fromCharCode'](0xff&_0x138342>>(-0x2*_0x12f668&0x6)):0x0){_0x40f060=_0x583751['indexOf'](_0x40f060);}for(let _0x2a0bda=0x0,_0x39d8c1=_0x5622d2['length'];_0x2a0bda<_0x39d8c1;_0x2a0bda++){_0x1acabf+='%'+('00'+_0x5622d2['charCodeAt'](_0x2a0bda)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1acabf);};_0x4aa6['aTWyLN']=_0x570eae,_0x4aa6['aARDER']={},_0x4aa6['VWhQCn']=!![];}const _0xe5d825=_0x8514da[0x0],_0x2b4f90=_0x44b711+_0xe5d825,_0x33a754=_0x4aa6['aARDER'][_0x2b4f90];return!_0x33a754?(_0x4aa6d6=_0x4aa6['aTWyLN'](_0x4aa6d6),_0x4aa6['aARDER'][_0x2b4f90]=_0x4aa6d6):_0x4aa6d6=_0x33a754,_0x4aa6d6;}function unsubscribeTask(_0x3a77c7,_0x5b56d4){const _0x51e02b=_0x5a25b0,_0x48fb2e=taskStreams[_0x51e02b(0xe0)](_0x5b56d4);if(!_0x48fb2e)return;_0x48fb2e[_0x51e02b(0xd5)]['delete'](_0x3a77c7),_0x48fb2e[_0x51e02b(0xd5)][_0x51e02b(0xf2)]===0x0&&deferredCloseTaskStream(_0x5b56d4);}function connectTaskStream(_0x2ca8fb){const _0x44bb41=_0x5a25b0,_0x4ee148=taskStreams[_0x44bb41(0xe0)](_0x2ca8fb);if(!_0x4ee148)return;_0x4ee148[_0x44bb41(0xff)]&&(_0x4ee148[_0x44bb41(0xff)][_0x44bb41(0x11b)](),_0x4ee148[_0x44bb41(0xff)]=null);try{_0x4ee148[_0x44bb41(0xff)]=new EventSource(_0x44bb41(0xf7)+_0x2ca8fb+_0x44bb41(0x116));for(const _0x2a78e4 of TASK_STREAM_EVENTS){_0x4ee148['eventSource'][_0x44bb41(0xe1)](_0x2a78e4,_0x3266d7=>{const _0xf6b1d5=_0x44bb41;broadcastToTask(_0x2ca8fb,_0xf6b1d5(0x107)+_0x2a78e4,_0x3266d7['data']),_0x4ee148['reconnectAttempts']=0x0;});}_0x4ee148['eventSource']['addEventListener'](_0x44bb41(0xe6),()=>{const _0x50498b=_0x44bb41;broadcastToTask(_0x2ca8fb,_0x50498b(0xfb),'{}'),_0x4ee148[_0x50498b(0x114)]=0x0;}),_0x4ee148[_0x44bb41(0xff)][_0x44bb41(0xe1)]('error',()=>{const _0x525a67=_0x44bb41;broadcastToTask(_0x2ca8fb,_0x525a67(0x10b),JSON[_0x525a67(0xfe)]({'error':_0x525a67(0x101)})),_0x4ee148[_0x525a67(0xff)]&&(_0x4ee148[_0x525a67(0xff)][_0x525a67(0x11b)](),_0x4ee148[_0x525a67(0xff)]=null),scheduleTaskReconnect(_0x2ca8fb);});}catch(_0x2c107a){console[_0x44bb41(0x112)](_0x44bb41(0x10c)+_0x2ca8fb+':',_0x2c107a),broadcastToTask(_0x2ca8fb,'task:error',JSON['stringify']({'error':_0x2c107a[_0x44bb41(0xea)]})),scheduleTaskReconnect(_0x2ca8fb);}}function broadcastToTask(_0x5d7c1f,_0x5eb42b,_0x207971){const _0x1b6623=_0x5a25b0,_0x52421c=taskStreams[_0x1b6623(0xe0)](_0x5d7c1f);if(!_0x52421c)return;const _0x582adc=[];_0x52421c[_0x1b6623(0xd5)][_0x1b6623(0xf8)](_0x20be0a=>{const _0x951581=_0x1b6623;try{_0x20be0a[_0x951581(0xdf)]({'type':_0x5eb42b,'taskId':_0x5d7c1f,'data':_0x207971});}catch(_0x42536e){_0x582adc['push'](_0x20be0a);}}),_0x582adc[_0x1b6623(0xe3)]>0x0&&(_0x582adc[_0x1b6623(0xf8)](_0x2a745c=>_0x52421c['subscribedPorts'][_0x1b6623(0x100)](_0x2a745c)),cleanUpDeadPorts(_0x582adc),_0x52421c['subscribedPorts'][_0x1b6623(0xf2)]===0x0&&closeTaskStream(_0x5d7c1f));}function closeTaskStream(_0x5619e6){const _0x2484f6=_0x5a25b0,_0x1bc791=taskStreams[_0x2484f6(0xe0)](_0x5619e6);if(!_0x1bc791)return;_0x1bc791[_0x2484f6(0xff)]&&_0x1bc791[_0x2484f6(0xff)][_0x2484f6(0x11b)](),_0x1bc791[_0x2484f6(0x105)]&&clearTimeout(_0x1bc791[_0x2484f6(0x105)]),taskStreams['delete'](_0x5619e6);}function deferredCloseTaskStream(_0x1bc586){setTimeout(()=>{const _0x4a30ee=_0x4aa6,_0x423d61=taskStreams[_0x4a30ee(0xe0)](_0x1bc586);_0x423d61&&_0x423d61[_0x4a30ee(0xd5)][_0x4a30ee(0xf2)]===0x0&&closeTaskStream(_0x1bc586);},0x0);}function scheduleTaskReconnect(_0x13d981){const _0x5b308b=_0x5a25b0,_0x159ac2=taskStreams[_0x5b308b(0xe0)](_0x13d981);if(!_0x159ac2||_0x159ac2['subscribedPorts'][_0x5b308b(0xf2)]===0x0)return;_0x159ac2[_0x5b308b(0x105)]&&clearTimeout(_0x159ac2[_0x5b308b(0x105)]);const _0x4a1401=Math[_0x5b308b(0x119)](0x3e8*Math[_0x5b308b(0xdc)](0x2,_0x159ac2[_0x5b308b(0x114)]),MAX_RECONNECT_DELAY);_0x159ac2['reconnectAttempts']++,console['log'](_0x5b308b(0xec)+_0x13d981+'\x20in\x20'+_0x4a1401+'ms'),_0x159ac2['reconnectTimeout']=setTimeout(()=>{const _0x334159=_0x5b308b;_0x159ac2['subscribedPorts'][_0x334159(0xf2)]>0x0&&connectTaskStream(_0x13d981);},_0x4a1401);}function cleanUpDeadPorts(_0x27e1c8){const _0x5c7de1=_0x5a25b0;for(const _0x2d6222 of _0x27e1c8){ports[_0x5c7de1(0x100)](_0x2d6222),taskStreams[_0x5c7de1(0xf8)]((_0x32d35e,_0x2b928b)=>{const _0x4b0a9f=_0x5c7de1;_0x32d35e[_0x4b0a9f(0xd5)][_0x4b0a9f(0x100)](_0x2d6222),_0x32d35e['subscribedPorts'][_0x4b0a9f(0xf2)]===0x0&&closeTaskStream(_0x2b928b);});}}function removePortFromAllTasks(_0x5cd373){const _0x56105a=_0x5a25b0;taskStreams[_0x56105a(0xf8)]((_0x3db647,_0x59551e)=>{const _0x1fd5f0=_0x56105a;_0x3db647[_0x1fd5f0(0xd5)][_0x1fd5f0(0xd3)](_0x5cd373)&&(_0x3db647['subscribedPorts'][_0x1fd5f0(0x100)](_0x5cd373),_0x3db647[_0x1fd5f0(0xd5)]['size']===0x0&&closeTaskStream(_0x59551e));});}self[_0x5a25b0(0x118)]=function(_0x5a6b56){const _0x58fd23=_0x5a25b0,_0x22aba7=_0x5a6b56['ports'][0x0];ports[_0x58fd23(0xda)](_0x22aba7),console[_0x58fd23(0xfa)](_0x58fd23(0xdd)+ports['size']),_0x22aba7[_0x58fd23(0xf9)]=function(_0x1adfb8){const _0x2d9d3f=_0x58fd23,{action:_0x5ce841,userId:_0x4d2367,taskId:_0x5b421d}=_0x1adfb8[_0x2d9d3f(0x10d)];switch(_0x5ce841){case'connect':connect(_0x4d2367);eventSource&&eventSource['readyState']===EventSource[_0x2d9d3f(0xf3)]&&_0x22aba7[_0x2d9d3f(0xdf)]({'type':'connected'});break;case'disconnect':ports[_0x2d9d3f(0x100)](_0x22aba7),removePortFromAllTasks(_0x22aba7),console[_0x2d9d3f(0xfa)](_0x2d9d3f(0x103)+ports['size']);ports['size']===0x0&&eventSource&&(eventSource[_0x2d9d3f(0x11b)](),eventSource=null,reconnectTimeout&&(clearTimeout(reconnectTimeout),reconnectTimeout=null));break;case _0x2d9d3f(0xd7):_0x4d2367!==currentUserId&&connect(_0x4d2367);break;case _0x2d9d3f(0xf1):subscribeTask(_0x22aba7,_0x5b421d);break;case'unsubscribeTask':unsubscribeTask(_0x22aba7,_0x5b421d);break;default:console[_0x2d9d3f(0xdb)](_0x2d9d3f(0x11d),_0x5ce841);}},_0x22aba7[_0x58fd23(0xee)]=function(_0x229834){const _0xb7acfb=_0x58fd23;console['error'](_0xb7acfb(0xe9),_0x229834),ports[_0xb7acfb(0x100)](_0x22aba7),removePortFromAllTasks(_0x22aba7);},_0x22aba7[_0x58fd23(0xef)]();};
1
+ const _0x536212=_0x1097;(function(_0x26697f,_0x3beeb5){const _0x30e45c=_0x1097,_0x2de0a0=_0x26697f();while(!![]){try{const _0x536834=parseInt(_0x30e45c(0xbf))/0x1+parseInt(_0x30e45c(0xbd))/0x2+-parseInt(_0x30e45c(0xa3))/0x3+-parseInt(_0x30e45c(0xc4))/0x4*(-parseInt(_0x30e45c(0xe0))/0x5)+parseInt(_0x30e45c(0xa7))/0x6+-parseInt(_0x30e45c(0xcf))/0x7+-parseInt(_0x30e45c(0xaf))/0x8*(-parseInt(_0x30e45c(0x9f))/0x9);if(_0x536834===_0x3beeb5)break;else _0x2de0a0['push'](_0x2de0a0['shift']());}catch(_0x409b8a){_0x2de0a0['push'](_0x2de0a0['shift']());}}}(_0x5a64,0xdcb32));const ports=new Set();let eventSource=null,currentUserId=null,reconnectTimeout=null,reconnectAttempts=0x0;const MAX_RECONNECT_DELAY=0x7530,taskStreams=new Map(),TASK_STREAM_EVENTS=[_0x536212(0xd3),_0x536212(0xd0),'metadata',_0x536212(0xd9),_0x536212(0xc3),_0x536212(0xd6),_0x536212(0x9b)];function _0x5a64(){const _0x441b9b=['w1ntrsbxB3jRzxjDifnJAgvKDwXPBMCGDgfZAYbZDhjLyw0GCMvJB25Uzwn0igzVCIa','w1ntrsbxB3jRzxjDifvUA25VD24Gywn0Aw9UoG','w1ntrsbxB3jRzxjDiezHAwXLzcb0BYbJCMvHDguGDgfZAYbfDMvUDfnVDxjJzsbMB3iG','y2HHBMDLzc1MAwXLCW','oezgs1vPuq','l3rHC2TZl3vWzgf0zxm','B3bLBG','Cg93','Cg9YDhm','CMvJB25Uzwn0qxr0zw1WDhm','y2XVC2u','w1ntrsbxB3jRzxjDie5Vig1VCMuGy29UBMvJDgvKihbVCNrZlcbJBg9ZAw5Nifntrq','z2v0','ChvZAa','CxvLDwuTCg9ZAxrPB24','mJG5mZiXmNvTqvH5sW','Bg9NCW','BgvUz3rO','B25TzxnZywDLzxjYB3i','ywn0AxzPDhK','w1ntrsbxB3jRzxjDifnJAgvKDwXPBMCGCMvJB25Uzwn0igLUia','y29UBMvJDgvK','yxbWlxnLCNzLCI1ZDgf0Dxm','BxmGkgf0DgvTChqG','q0Xpu0ve','C3vTBwfYEq','C25HChnOB3q','w1ntrsbxB3jRzxjDiezHAwXLzcb0BYbJCMvHDguGrxzLBNrtB3vYy2u6','zxzLBNrtB3vYy2u','D2fYBG','w1ntrsbxB3jRzxjDifbVCNqGzgLZy29UBMvJDgvKlIbuB3rHBcbWB3j0CZOG','C2v0','mZG5odq1u0fZC1jJ','ywrKrxzLBNrmAxn0zw5LCG','C3rHDhvZ','C3rYAw5NAwz5','ywrK','y29TCgXLDgu','CMvHzhLtDgf0zq','BMv3lxrHC2S','zgLZy29UBMvJDa','oujNyND6zW','y29UBMvJDa','Cg9ZDe1LC3nHz2u','BwvZC2fNzq','mZGWodK1owzpBgT2BG','BwLU','Dw5ZDwjZy3jPyMvuyxnR','w1ntrsbxB3jRzxjDie5LDYbWB3j0ignVBM5Ly3rLzc4Gvg90ywWGCg9YDhm6ia','mJeXmtG1nLLSyxPgEG','C3rHCNq','zxjYB3i','C2L6zq','DgfZAZPLCNjVCG','zM9YrwfJAa','q29UBMvJDgLVBIbLCNjVCG','CMvJB25Uzwn0vgLTzw91Da','mZa0mtqZmKXLze9YzW','w1ntrsbxB3jRzxjDiezHAwXLzcb0BYbZzw5KihrVihbVCNqSihjLBw92Aw5NoG','t1bftG','zgvSzxrL','Bg9N','AgfZ','w1ntrsbxB3jRzxjDienVBM5Ly3rPB24GzxjYB3i6','B25TzxnZywDL','p3vZzxjjzd0','C3vIC2nYAwjLvgfZAW','zgf0yq','C3vIC2nYAwjLzfbVCNrZ','l3n0CMvHBq','w1ntrsbxB3jRzxjDifbVCNqGBwvZC2fNzsbLCNjVCJO','mte3otKXmKnLvuHjqW','DgfZAZPJB25Uzwn0zwq','mteWodKWnMTjsujgvG'];_0x5a64=function(){return _0x441b9b;};return _0x5a64();}function connect(_0x2cbd80){const _0x442170=_0x536212;eventSource&&currentUserId!==_0x2cbd80&&(eventSource[_0x442170(0xca)](),eventSource=null);if(eventSource&&eventSource[_0x442170(0x9c)]!==EventSource['CLOSED'])return;currentUserId=_0x2cbd80;const _0x386628=_0x2cbd80&&_0x2cbd80!=='me'?_0x442170(0xb7)+_0x2cbd80:'';try{eventSource=new EventSource(_0x442170(0xc5)+_0x386628),eventSource[_0x442170(0xe1)](_0x442170(0xda),_0x4853d5=>{const _0x49e1b0=_0x442170;broadcast({'type':'snapshot','data':_0x4853d5[_0x49e1b0(0xb9)]}),reconnectAttempts=0x0;}),eventSource['addEventListener'](_0x442170(0xd3),_0x1d7475=>{const _0x73b8b8=_0x442170;broadcast({'type':'activity','data':_0x1d7475[_0x73b8b8(0xb9)]});}),eventSource[_0x442170(0xe1)]('status',_0x554f78=>{const _0x5f20f7=_0x442170;broadcast({'type':_0x5f20f7(0xe2),'data':_0x554f78[_0x5f20f7(0xb9)]});}),eventSource['addEventListener']('new-task',_0x1aa0bb=>{const _0xfdf6ee=_0x442170;broadcast({'type':_0xfdf6ee(0x9d),'data':_0x1aa0bb['data']});}),eventSource[_0x442170(0xe1)](_0x442170(0xce),_0x104b45=>{const _0x484f3e=_0x442170;broadcast({'type':'queue-position','data':_0x104b45[_0x484f3e(0xb9)]});}),eventSource['addEventListener'](_0x442170(0xc6),()=>{const _0x45190d=_0x442170;broadcast({'type':_0x45190d(0xd5)}),reconnectAttempts=0x0;}),eventSource['addEventListener'](_0x442170(0xa9),_0x3854cd=>{const _0x592831=_0x442170;console['error'](_0x592831(0xb5),_0x3854cd),broadcast({'type':_0x592831(0xa9),'error':_0x592831(0xad)}),eventSource&&(eventSource['close'](),eventSource=null),scheduleReconnect();});}catch(_0x4fa8ea){console[_0x442170(0xa9)](_0x442170(0xdb),_0x4fa8ea),broadcast({'type':_0x442170(0xa9),'error':_0x4fa8ea[_0x442170(0xa2)]}),scheduleReconnect();}}function scheduleReconnect(){const _0x480c76=_0x536212;reconnectTimeout&&clearTimeout(reconnectTimeout);if(ports[_0x480c76(0xaa)]===0x0)return;const _0xc00f9c=Math[_0x480c76(0xa4)](0x3e8*Math[_0x480c76(0xc7)](0x2,reconnectAttempts),MAX_RECONNECT_DELAY);reconnectAttempts++,console['log'](_0x480c76(0xd4)+_0xc00f9c+_0x480c76(0xd7)+reconnectAttempts+')'),reconnectTimeout=setTimeout(()=>{ports['size']>0x0&&connect(currentUserId);},_0xc00f9c);}function broadcast(_0x115865){const _0x233751=_0x536212,_0x4c4d9e=[];ports[_0x233751(0xac)](_0x2e8505=>{const _0x4733d9=_0x233751;try{_0x2e8505['postMessage'](_0x115865);}catch(_0x27d654){console[_0x4733d9(0xdd)](_0x4733d9(0xb0),_0x27d654),_0x4c4d9e[_0x4733d9(0xcd)](_0x2e8505);}}),_0x4c4d9e[_0x233751(0xd1)]>0x0&&cleanUpDeadPorts(_0x4c4d9e),ports[_0x233751(0xaa)]===0x0&&eventSource&&(console[_0x233751(0xb3)](_0x233751(0xcb)),eventSource[_0x233751(0xca)](),eventSource=null,reconnectTimeout&&(clearTimeout(reconnectTimeout),reconnectTimeout=null));}function subscribeTask(_0x2cc8fa,_0x6fd37c){const _0x19e716=_0x536212;let _0x489755=taskStreams[_0x19e716(0xcc)](_0x6fd37c);!_0x489755&&(_0x489755={'eventSource':null,'reconnectTimeout':null,'reconnectAttempts':0x0,'subscribedPorts':new Set()},taskStreams[_0x19e716(0xdf)](_0x6fd37c,_0x489755));_0x489755['subscribedPorts']['add'](_0x2cc8fa);if(!_0x489755[_0x19e716(0xdc)]||_0x489755[_0x19e716(0xdc)]['readyState']===EventSource[_0x19e716(0xd8)])connectTaskStream(_0x6fd37c);else{if(_0x489755[_0x19e716(0xdc)]['readyState']===EventSource[_0x19e716(0xb1)])try{_0x2cc8fa[_0x19e716(0xa1)]({'type':_0x19e716(0xbe),'taskId':_0x6fd37c});}catch(_0x4d7884){}}}function unsubscribeTask(_0x2bca0d,_0x3368b5){const _0x2ba3e3=_0x536212,_0x63b25=taskStreams[_0x2ba3e3(0xcc)](_0x3368b5);if(!_0x63b25)return;_0x63b25[_0x2ba3e3(0xba)]['delete'](_0x2bca0d),_0x63b25[_0x2ba3e3(0xba)][_0x2ba3e3(0xaa)]===0x0&&deferredCloseTaskStream(_0x3368b5);}function _0x1097(_0x19336b,_0x295766){_0x19336b=_0x19336b-0x9a;const _0x5a64f0=_0x5a64();let _0x1097eb=_0x5a64f0[_0x19336b];if(_0x1097['FiSrbQ']===undefined){var _0x346c45=function(_0x57a40f){const _0x190641='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2cbd80='',_0x386628='';for(let _0x4853d5=0x0,_0x1d7475,_0x554f78,_0x1aa0bb=0x0;_0x554f78=_0x57a40f['charAt'](_0x1aa0bb++);~_0x554f78&&(_0x1d7475=_0x4853d5%0x4?_0x1d7475*0x40+_0x554f78:_0x554f78,_0x4853d5++%0x4)?_0x2cbd80+=String['fromCharCode'](0xff&_0x1d7475>>(-0x2*_0x4853d5&0x6)):0x0){_0x554f78=_0x190641['indexOf'](_0x554f78);}for(let _0x104b45=0x0,_0x3854cd=_0x2cbd80['length'];_0x104b45<_0x3854cd;_0x104b45++){_0x386628+='%'+('00'+_0x2cbd80['charCodeAt'](_0x104b45)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x386628);};_0x1097['cHOpXW']=_0x346c45,_0x1097['rgGUNT']={},_0x1097['FiSrbQ']=!![];}const _0x4bcbf9=_0x5a64f0[0x0],_0x5c6016=_0x19336b+_0x4bcbf9,_0x30f1ba=_0x1097['rgGUNT'][_0x5c6016];return!_0x30f1ba?(_0x1097eb=_0x1097['cHOpXW'](_0x1097eb),_0x1097['rgGUNT'][_0x5c6016]=_0x1097eb):_0x1097eb=_0x30f1ba,_0x1097eb;}function connectTaskStream(_0x551ae2){const _0x48ebbf=_0x536212,_0x5c164d=taskStreams[_0x48ebbf(0xcc)](_0x551ae2);if(!_0x5c164d)return;_0x5c164d[_0x48ebbf(0xdc)]&&(_0x5c164d[_0x48ebbf(0xdc)][_0x48ebbf(0xca)](),_0x5c164d[_0x48ebbf(0xdc)]=null);try{_0x5c164d['eventSource']=new EventSource('/tasks/'+_0x551ae2+_0x48ebbf(0xbb));for(const _0x4ebbc0 of TASK_STREAM_EVENTS){_0x5c164d['eventSource'][_0x48ebbf(0xe1)](_0x4ebbc0,_0x3bfcd0=>{const _0x23fb3f=_0x48ebbf;broadcastToTask(_0x551ae2,'task:'+_0x4ebbc0,_0x3bfcd0[_0x23fb3f(0xb9)]),_0x5c164d[_0x23fb3f(0xc9)]=0x0;});}_0x5c164d['eventSource'][_0x48ebbf(0xe1)](_0x48ebbf(0xc6),()=>{const _0x1f10f2=_0x48ebbf;broadcastToTask(_0x551ae2,_0x1f10f2(0xbe),'{}'),_0x5c164d[_0x1f10f2(0xc9)]=0x0;}),_0x5c164d[_0x48ebbf(0xdc)]['addEventListener'](_0x48ebbf(0xa9),()=>{const _0x4d042c=_0x48ebbf;broadcastToTask(_0x551ae2,'task:error',JSON[_0x4d042c(0xe3)]({'error':_0x4d042c(0xad)})),_0x5c164d[_0x4d042c(0xdc)]&&(_0x5c164d[_0x4d042c(0xdc)]['close'](),_0x5c164d[_0x4d042c(0xdc)]=null),scheduleTaskReconnect(_0x551ae2);});}catch(_0x3fee32){console['error'](_0x48ebbf(0xc2)+_0x551ae2+':',_0x3fee32),broadcastToTask(_0x551ae2,_0x48ebbf(0xab),JSON['stringify']({'error':_0x3fee32['message']})),scheduleTaskReconnect(_0x551ae2);}}function broadcastToTask(_0x326b8e,_0x3ebca2,_0x412f3c){const _0x36d23d=_0x536212,_0x4c89af=taskStreams[_0x36d23d(0xcc)](_0x326b8e);if(!_0x4c89af)return;const _0xcc44b3=[];_0x4c89af['subscribedPorts'][_0x36d23d(0xac)](_0x492fe8=>{const _0x2c569a=_0x36d23d;try{_0x492fe8[_0x2c569a(0xa1)]({'type':_0x3ebca2,'taskId':_0x326b8e,'data':_0x412f3c});}catch(_0x47632d){_0xcc44b3[_0x2c569a(0xcd)](_0x492fe8);}}),_0xcc44b3[_0x36d23d(0xd1)]>0x0&&(_0xcc44b3[_0x36d23d(0xac)](_0x4abe7f=>_0x4c89af[_0x36d23d(0xba)][_0x36d23d(0xb2)](_0x4abe7f)),cleanUpDeadPorts(_0xcc44b3),_0x4c89af['subscribedPorts'][_0x36d23d(0xaa)]===0x0&&closeTaskStream(_0x326b8e));}function closeTaskStream(_0x7fb703){const _0x56f104=_0x536212,_0x37bd0d=taskStreams[_0x56f104(0xcc)](_0x7fb703);if(!_0x37bd0d)return;_0x37bd0d['eventSource']&&_0x37bd0d['eventSource'][_0x56f104(0xca)](),_0x37bd0d['reconnectTimeout']&&clearTimeout(_0x37bd0d[_0x56f104(0xae)]),taskStreams[_0x56f104(0xb2)](_0x7fb703);}function deferredCloseTaskStream(_0x30c686){setTimeout(()=>{const _0x4aa38a=_0x1097,_0x5c93f6=taskStreams['get'](_0x30c686);_0x5c93f6&&_0x5c93f6[_0x4aa38a(0xba)][_0x4aa38a(0xaa)]===0x0&&closeTaskStream(_0x30c686);},0x0);}function scheduleTaskReconnect(_0x581f6c){const _0x1b8f97=_0x536212,_0x1443df=taskStreams[_0x1b8f97(0xcc)](_0x581f6c);if(!_0x1443df||_0x1443df[_0x1b8f97(0xba)][_0x1b8f97(0xaa)]===0x0)return;_0x1443df[_0x1b8f97(0xae)]&&clearTimeout(_0x1443df['reconnectTimeout']);const _0x366d8d=Math[_0x1b8f97(0xa4)](0x3e8*Math['pow'](0x2,_0x1443df[_0x1b8f97(0xc9)]),MAX_RECONNECT_DELAY);_0x1443df['reconnectAttempts']++,console[_0x1b8f97(0xb3)](_0x1b8f97(0xc0)+_0x581f6c+'\x20in\x20'+_0x366d8d+'ms'),_0x1443df['reconnectTimeout']=setTimeout(()=>{const _0x3f00c3=_0x1b8f97;_0x1443df[_0x3f00c3(0xba)][_0x3f00c3(0xaa)]>0x0&&connectTaskStream(_0x581f6c);},_0x366d8d);}function cleanUpDeadPorts(_0x2e0c09){const _0x43d788=_0x536212;for(const _0x371419 of _0x2e0c09){ports[_0x43d788(0xb2)](_0x371419),taskStreams[_0x43d788(0xac)]((_0x4d4ef7,_0x5ef891)=>{const _0x1a2262=_0x43d788;_0x4d4ef7[_0x1a2262(0xba)][_0x1a2262(0xb2)](_0x371419),_0x4d4ef7[_0x1a2262(0xba)][_0x1a2262(0xaa)]===0x0&&closeTaskStream(_0x5ef891);});}}function removePortFromAllTasks(_0x44b681){const _0x11d91f=_0x536212;taskStreams[_0x11d91f(0xac)]((_0x5d2b03,_0x3ecf22)=>{const _0x322354=_0x11d91f;_0x5d2b03[_0x322354(0xba)][_0x322354(0xb4)](_0x44b681)&&(_0x5d2b03[_0x322354(0xba)][_0x322354(0xb2)](_0x44b681),_0x5d2b03[_0x322354(0xba)][_0x322354(0xaa)]===0x0&&closeTaskStream(_0x3ecf22));});}self['onconnect']=function(_0x398b43){const _0x52d74c=_0x536212,_0x5155df=_0x398b43[_0x52d74c(0xc8)][0x0];ports[_0x52d74c(0x9a)](_0x5155df),console[_0x52d74c(0xb3)](_0x52d74c(0xa6)+ports[_0x52d74c(0xaa)]),_0x5155df[_0x52d74c(0xb6)]=function(_0x347837){const _0x191f86=_0x52d74c,{action:_0x19330a,userId:_0x553360,taskId:_0x4d746e}=_0x347837[_0x191f86(0xb9)];switch(_0x19330a){case _0x191f86(0xa0):connect(_0x553360);eventSource&&eventSource[_0x191f86(0x9c)]===EventSource[_0x191f86(0xb1)]&&_0x5155df['postMessage']({'type':_0x191f86(0xd5)});break;case _0x191f86(0x9e):ports['delete'](_0x5155df),removePortFromAllTasks(_0x5155df),console[_0x191f86(0xb3)](_0x191f86(0xde)+ports[_0x191f86(0xaa)]);ports['size']===0x0&&eventSource&&(eventSource[_0x191f86(0xca)](),eventSource=null,reconnectTimeout&&(clearTimeout(reconnectTimeout),reconnectTimeout=null));break;case'changeFilter':_0x553360!==currentUserId&&connect(_0x553360);break;case _0x191f86(0xb8):subscribeTask(_0x5155df,_0x4d746e);break;case _0x191f86(0xa5):unsubscribeTask(_0x5155df,_0x4d746e);break;default:console[_0x191f86(0xdd)](_0x191f86(0xc1),_0x19330a);}},_0x5155df[_0x52d74c(0xd2)]=function(_0x308e66){const _0x1269f5=_0x52d74c;console[_0x1269f5(0xa9)](_0x1269f5(0xbc),_0x308e66),ports[_0x1269f5(0xb2)](_0x5155df),removePortFromAllTasks(_0x5155df);},_0x5155df[_0x52d74c(0xa8)]();};
@@ -12402,6 +12402,143 @@ select option[value=""] {
12402
12402
  margin-top: 8px;
12403
12403
  }
12404
12404
 
12405
+ /* ============================================================
12406
+ PULL REQUEST DIALOG
12407
+ ============================================================ */
12408
+
12409
+ .profound-pr-modal {
12410
+ /* Inherits modal styles */
12411
+ }
12412
+
12413
+ .pr-title-input {
12414
+ width: 100%;
12415
+ padding: 12px;
12416
+ font-size: 14px;
12417
+ font-family: "JetBrains Mono", monospace;
12418
+ border: 1px solid var(--color-border);
12419
+ border-radius: var(--radius-medium);
12420
+ background: var(--color-background);
12421
+ color: var(--color-text);
12422
+ line-height: 1.5;
12423
+ transition: border-color 0.2s ease;
12424
+ }
12425
+
12426
+ .pr-title-input:focus {
12427
+ outline: none;
12428
+ border-color: var(--color-primary);
12429
+ }
12430
+
12431
+ .pr-title-input::placeholder {
12432
+ color: var(--color-text-muted);
12433
+ }
12434
+
12435
+ .pr-body-input {
12436
+ width: 100%;
12437
+ padding: 12px;
12438
+ font-size: 14px;
12439
+ font-family: "JetBrains Mono", monospace;
12440
+ border: 1px solid var(--color-border);
12441
+ border-radius: var(--radius-medium);
12442
+ background: var(--color-background);
12443
+ color: var(--color-text);
12444
+ line-height: 1.5;
12445
+ resize: vertical;
12446
+ min-height: 120px;
12447
+ transition: border-color 0.2s ease;
12448
+ }
12449
+
12450
+ .pr-body-input:focus {
12451
+ outline: none;
12452
+ border-color: var(--color-primary);
12453
+ }
12454
+
12455
+ .pr-body-input::placeholder {
12456
+ color: var(--color-text-muted);
12457
+ }
12458
+
12459
+ .pr-repos-list {
12460
+ display: flex;
12461
+ flex-direction: column;
12462
+ gap: 12px;
12463
+ margin-top: 8px;
12464
+ }
12465
+
12466
+ .pr-repo-selector {
12467
+ display: flex;
12468
+ align-items: center;
12469
+ gap: 10px;
12470
+ margin-bottom: 8px;
12471
+ }
12472
+
12473
+ .pr-repo-name {
12474
+ color: var(--color-text);
12475
+ font-size: 14px;
12476
+ font-weight: 500;
12477
+ white-space: nowrap;
12478
+ }
12479
+
12480
+ .pr-arrow {
12481
+ color: var(--color-text-secondary);
12482
+ font-size: 14px;
12483
+ margin: 0 4px;
12484
+ }
12485
+
12486
+ .pr-source-branch {
12487
+ color: var(--color-text-secondary);
12488
+ font-size: 14px;
12489
+ white-space: nowrap;
12490
+ }
12491
+
12492
+ .pr-base-branch {
12493
+ color: var(--color-text);
12494
+ font-size: 14px;
12495
+ white-space: nowrap;
12496
+ }
12497
+
12498
+ .pr-connections-list {
12499
+ display: flex;
12500
+ flex-direction: column;
12501
+ gap: 12px;
12502
+ margin-top: 12px;
12503
+ }
12504
+
12505
+ .pr-link {
12506
+ color: var(--color-primary);
12507
+ text-decoration: none;
12508
+ }
12509
+
12510
+ .pr-link:hover {
12511
+ text-decoration: underline;
12512
+ }
12513
+
12514
+ .pr-modal-warning {
12515
+ display: flex;
12516
+ align-items: flex-start;
12517
+ gap: 10px;
12518
+ padding: 12px;
12519
+ background: color-mix(in srgb, var(--color-warning) 10%, var(--color-bg-secondary));
12520
+ border-left: 3px solid var(--color-warning);
12521
+ border-radius: 4px;
12522
+ margin-bottom: 16px;
12523
+ }
12524
+
12525
+ .pr-modal-error {
12526
+ display: flex;
12527
+ align-items: flex-start;
12528
+ gap: 10px;
12529
+ padding: 12px;
12530
+ background: color-mix(in srgb, var(--color-error) 10%, var(--color-bg-secondary));
12531
+ border-left: 3px solid var(--color-error);
12532
+ border-radius: 4px;
12533
+ margin-bottom: 16px;
12534
+ }
12535
+
12536
+ #meta-pull-requests {
12537
+ display: flex;
12538
+ flex-wrap: wrap;
12539
+ gap: 8px;
12540
+ }
12541
+
12405
12542
  .admin-dropdown {
12406
12543
  min-width: 220px;
12407
12544
  }
@@ -433,6 +433,7 @@
433
433
  </div>
434
434
  <button class="btn-ghost btn-small" id="stop-task" disabled>Stop</button>
435
435
  <button class="btn-primary btn-small" id="approve-task" disabled>Approve</button>
436
+ <button class="btn-primary btn-small" id="create-pr-task" hidden>Create Pull Request</button>
436
437
  </div>
437
438
  </div>
438
439
 
@@ -619,6 +620,10 @@
619
620
  <dt>Approved by</dt>
620
621
  <dd id="meta-approved-by">—</dd>
621
622
  </div>
623
+ <div id="meta-pull-requests-wrapper" hidden>
624
+ <dt>Pull Requests</dt>
625
+ <dd id="meta-pull-requests"></dd>
626
+ </div>
622
627
  <div id="meta-follow-ups-wrapper" hidden>
623
628
  <dt>Follow-Ups</dt>
624
629
  <dd><button id="meta-follow-ups" class="link-button" style="padding: 0; border: none; background: none; color: var(--color-primary); cursor: pointer; text-decoration: underline;">—</button></dd>
@@ -1905,5 +1910,27 @@
1905
1910
  </div>
1906
1911
  </div>
1907
1912
  </div>
1913
+
1914
+ <!-- Git Connections Required Modal -->
1915
+ <div id="git-connections-required-modal" class="modal" hidden>
1916
+ <div class="modal-overlay"></div>
1917
+ <div class="modal-content">
1918
+ <div class="modal-header">
1919
+ <h2 id="git-connections-title">Git Connection Required</h2>
1920
+ <button type="button" class="modal-close" aria-label="Close">&times;</button>
1921
+ </div>
1922
+ <div class="modal-body">
1923
+ <p class="git-connections-intro">This task requires authorization for the following Git providers:</p>
1924
+ <div id="git-connections-required-list" class="git-connections-required-list">
1925
+ <!-- Provider cards will be populated here -->
1926
+ </div>
1927
+ <p class="git-connections-hint">Your pull request will be created once all providers are connected.</p>
1928
+ </div>
1929
+ <div class="modal-actions">
1930
+ <button type="button" class="btn-secondary" id="git-connections-close-btn">Cancel</button>
1931
+ </div>
1932
+ </div>
1933
+ </div>
1934
+
1908
1935
  </body>
1909
1936
  </html>