@profoundlogic/coderflow-server 0.6.2 → 0.6.3
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.
- package/dist/base-image/Dockerfile +4 -2
- package/dist/base-image/agent-wrapper.sh +32 -4
- package/dist/base-image/entrypoint.sh +3 -0
- package/dist/coder-server.js +1 -1
- package/dist/config/cli-models.json +12 -0
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.html +39 -0
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.html +23 -0
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/styles.css +101 -1
- package/dist/web-ui/public/task.html +46 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
- package/dist/.claude/settings.local.json +0 -20
- package/dist/playwright-test-results/.last-run.json +0 -54
|
@@ -1 +1 @@
|
|
|
1
|
-
function isSharedWorkerSupported(){return typeof SharedWorker!=='undefined';}function eventTypeToHandler(
|
|
1
|
+
function isSharedWorkerSupported(){return typeof SharedWorker!=='undefined';}function eventTypeToHandler(_0x353a0a){if(_0x353a0a==='connected')return'onConnected';if(_0x353a0a==='error')return'onError';return'on'+_0x353a0a['split']('-')['map'](_0x501c7d=>_0x501c7d['charAt'](0x0)['toUpperCase']()+_0x501c7d['slice'](0x1))['join']('');}const TASK_STREAM_EVENTS=['activity','logs','metadata','summary','changed-files','app-server-status','complete'];export class TaskUpdatesClient{constructor(){this['listeners']=new Map(),this['worker']=null,this['port']=null,this['eventSource']=null,this['userId']=null,this['reconnectTimeout']=null,this['reconnectAttempts']=0x0,this['useSharedWorker']=isSharedWorkerSupported(),this['connected']=![],this['_taskSubscriptions']=new Map(),this['_taskSubIdCounter']=0x0,this['_handleWorkerMessage']=this['_handleWorkerMessage']['bind'](this),this['_handleDirectSSE']=this['_handleDirectSSE']['bind'](this);}['on'](_0x263c3d,_0x16e1c6){return!this['listeners']['has'](_0x263c3d)&&this['listeners']['set'](_0x263c3d,new Set()),this['listeners']['get'](_0x263c3d)['add'](_0x16e1c6),this;}['off'](_0x2c0225,_0x507ffc){return this['listeners']['has'](_0x2c0225)&&this['listeners']['get'](_0x2c0225)['delete'](_0x507ffc),this;}['_emit'](_0x2ba91f,_0x2cf6cb){this['listeners']['has'](_0x2ba91f)&&this['listeners']['get'](_0x2ba91f)['forEach'](_0x44fe77=>{try{_0x44fe77(_0x2cf6cb);}catch(_0x1111af){console['error']('[SSE\x20Client]\x20Error\x20in\x20'+_0x2ba91f+'\x20listener:',_0x1111af);}});}['connect'](_0x131151='me'){this['userId']=_0x131151,this['useSharedWorker']?this['_connectViaWorker'](_0x131151):this['_connectDirect'](_0x131151);}['_connectViaWorker'](_0x456c42){try{this['_ensureWorker'](),this['port']['postMessage']({'action':'connect','userId':_0x456c42});}catch(_0x48a347){console['error']('[SSE\x20Client]\x20SharedWorker\x20failed,\x20falling\x20back\x20to\x20direct\x20SSE:',_0x48a347),this['useSharedWorker']=![],this['_connectDirect'](_0x456c42);}}['_ensureWorker'](){!this['worker']&&(this['worker']=new SharedWorker('/sse-shared-worker.js'),this['port']=this['worker']['port'],this['port']['onmessage']=this['_handleWorkerMessage'],this['port']['onmessageerror']=_0x9d78cb=>{console['error']('[SSE\x20Client]\x20Worker\x20message\x20error:',_0x9d78cb),this['_emit']('error',{'error':'Worker\x20message\x20error'});},this['port']['start']());}['_handleWorkerMessage'](_0xaf3656){const _0x8cdf48=_0xaf3656['data'];if(_0x8cdf48['type']&&_0x8cdf48['type']['startsWith']('task:')){this['_handleTaskStreamMessage'](_0x8cdf48);return;}switch(_0x8cdf48['type']){case'connected':this['connected']=!![],this['_emit']('connected',{});break;case'snapshot':case'activity':case'status':case'new-task':case'queue-position':try{const _0x1a7932=JSON['parse'](_0x8cdf48['data']);this['_emit'](_0x8cdf48['type'],_0x1a7932);}catch(_0x23b9ae){console['error']('[SSE\x20Client]\x20Failed\x20to\x20parse\x20'+_0x8cdf48['type']+'\x20data:',_0x23b9ae);}break;case'error':this['connected']=![],this['_emit']('error',_0x8cdf48);break;default:console['warn']('[SSE\x20Client]\x20Unknown\x20message\x20type:',_0x8cdf48['type']);}}['_handleTaskStreamMessage'](_0x3a7966){const {taskId:_0x48fa49,type:_0x3bbada,data:_0x4d8bcc}=_0x3a7966,_0x1cece2=this['_taskSubscriptions']['get'](_0x48fa49);if(!_0x1cece2||_0x1cece2['size']===0x0)return;const _0x322988=_0x3bbada['replace']('task:',''),_0x3a5057=eventTypeToHandler(_0x322988);_0x1cece2['forEach'](_0xd9a29=>{if(_0xd9a29['handlers'][_0x3a5057])try{const _0x35138d=typeof _0x4d8bcc==='string'?JSON['parse'](_0x4d8bcc):_0x4d8bcc;_0xd9a29['handlers'][_0x3a5057](_0x35138d);}catch(_0x133360){console['error']('[SSE\x20Client]\x20Error\x20in\x20task\x20'+_0x322988+'\x20handler:',_0x133360);}});}['_connectDirect'](_0x197087){this['eventSource']&&(this['eventSource']['close'](),this['eventSource']=null);const _0x2eb0fd=_0x197087&&_0x197087!=='me'?'?userId='+_0x197087:'';try{this['eventSource']=new EventSource('/tasks/updates'+_0x2eb0fd),this['eventSource']['addEventListener']('open',()=>{this['connected']=!![],this['reconnectAttempts']=0x0,this['_emit']('connected',{});}),this['eventSource']['addEventListener']('snapshot',_0x360275=>{this['_handleDirectSSE']('snapshot',_0x360275),this['reconnectAttempts']=0x0;}),this['eventSource']['addEventListener']('activity',_0xeef9cf=>{this['_handleDirectSSE']('activity',_0xeef9cf);}),this['eventSource']['addEventListener']('status',_0x3ed469=>{this['_handleDirectSSE']('status',_0x3ed469);}),this['eventSource']['addEventListener']('new-task',_0x5bfae4=>{this['_handleDirectSSE']('new-task',_0x5bfae4);}),this['eventSource']['addEventListener']('queue-position',_0x30f9cd=>{this['_handleDirectSSE']('queue-position',_0x30f9cd);}),this['eventSource']['addEventListener']('error',_0x2191b5=>{console['error']('[SSE\x20Client]\x20Direct\x20SSE\x20error:',_0x2191b5),this['connected']=![],this['_emit']('error',{'error':'Connection\x20error'}),this['eventSource']&&(this['eventSource']['close'](),this['eventSource']=null),this['_scheduleReconnect']();});}catch(_0x594cdd){console['error']('[SSE\x20Client]\x20Failed\x20to\x20create\x20EventSource:',_0x594cdd),this['_emit']('error',{'error':_0x594cdd['message']}),this['_scheduleReconnect']();}}['_handleDirectSSE'](_0x44a33e,_0x51dfdd){try{const _0x1d2c4f=JSON['parse'](_0x51dfdd['data']);this['_emit'](_0x44a33e,_0x1d2c4f);}catch(_0x24a62b){console['error']('[SSE\x20Client]\x20Failed\x20to\x20parse\x20'+_0x44a33e+'\x20data:',_0x24a62b);}}['_scheduleReconnect'](){this['reconnectTimeout']&&clearTimeout(this['reconnectTimeout']);const _0x494caa=Math['min'](0x3e8*Math['pow'](0x2,this['reconnectAttempts']),0x7530);this['reconnectAttempts']++,console['log']('[SSE\x20Client]\x20Scheduling\x20reconnect\x20in\x20'+_0x494caa+'ms'),this['reconnectTimeout']=setTimeout(()=>{this['_connectDirect'](this['userId']);},_0x494caa);}['changeFilter'](_0x49aef2){if(_0x49aef2===this['userId'])return;this['userId']=_0x49aef2;if(this['useSharedWorker']&&this['port'])this['port']['postMessage']({'action':'changeFilter','userId':_0x49aef2});else this['eventSource']&&this['_connectDirect'](_0x49aef2);}['subscribeTask'](_0x5d73c3,_0x3f23a9){return this['useSharedWorker']?this['_subscribeTaskViaWorker'](_0x5d73c3,_0x3f23a9):this['_subscribeTaskDirect'](_0x5d73c3,_0x3f23a9);}['unsubscribeTask'](_0x2614d1){if(!_0x2614d1)return;_0x2614d1['type']==='worker'?this['_unsubscribeTaskWorker'](_0x2614d1):this['_unsubscribeTaskDirect'](_0x2614d1);}['_subscribeTaskViaWorker'](_0x1797bc,_0x241953){try{this['_ensureWorker']();}catch(_0x364a9c){return console['error']('[SSE\x20Client]\x20SharedWorker\x20failed\x20for\x20task\x20sub,\x20falling\x20back:',_0x364a9c),this['useSharedWorker']=![],this['_subscribeTaskDirect'](_0x1797bc,_0x241953);}const _0x622cac=++this['_taskSubIdCounter'],_0x259064={'type':'worker','taskId':_0x1797bc,'handlers':_0x241953,'id':_0x622cac};return!this['_taskSubscriptions']['has'](_0x1797bc)&&(this['_taskSubscriptions']['set'](_0x1797bc,new Set()),this['port']['postMessage']({'action':'subscribeTask','taskId':_0x1797bc})),this['_taskSubscriptions']['get'](_0x1797bc)['add'](_0x259064),_0x259064;}['_unsubscribeTaskWorker'](_0x32ed17){const {taskId:_0x4131a9}=_0x32ed17,_0x551efd=this['_taskSubscriptions']['get'](_0x4131a9);if(_0x551efd){_0x551efd['delete'](_0x32ed17);if(_0x551efd['size']===0x0){this['_taskSubscriptions']['delete'](_0x4131a9);try{this['port']&&this['port']['postMessage']({'action':'unsubscribeTask','taskId':_0x4131a9});}catch(_0x345b00){}}}}['_subscribeTaskDirect'](_0x13cbc8,_0x23ed83){const _0x1e1732=++this['_taskSubIdCounter'],_0x34c89f=new EventSource('/tasks/'+_0x13cbc8+'/stream'),_0x32a1a0={'type':'direct','taskId':_0x13cbc8,'handlers':_0x23ed83,'id':_0x1e1732,'eventSource':_0x34c89f};!this['_taskSubscriptions']['has'](_0x13cbc8)&&this['_taskSubscriptions']['set'](_0x13cbc8,new Set());this['_taskSubscriptions']['get'](_0x13cbc8)['add'](_0x32a1a0);for(const _0x291a5e of TASK_STREAM_EVENTS){const _0x4a89d3=eventTypeToHandler(_0x291a5e);_0x34c89f['addEventListener'](_0x291a5e,_0x533f98=>{if(_0x23ed83[_0x4a89d3])try{const _0x1b4424=JSON['parse'](_0x533f98['data']);_0x23ed83[_0x4a89d3](_0x1b4424);}catch(_0x3b7fc7){console['error']('[SSE\x20Client]\x20Error\x20parsing\x20task\x20'+_0x291a5e+':',_0x3b7fc7);}});}return _0x34c89f['addEventListener']('open',()=>{if(_0x23ed83['onConnected'])_0x23ed83['onConnected']();}),_0x34c89f['addEventListener']('error',()=>{if(_0x23ed83['onError'])_0x23ed83['onError']({'error':'Connection\x20error'});}),_0x32a1a0;}['_unsubscribeTaskDirect'](_0x348cff){_0x348cff['eventSource']&&(_0x348cff['eventSource']['close'](),_0x348cff['eventSource']=null);const _0x433971=this['_taskSubscriptions']['get'](_0x348cff['taskId']);_0x433971&&(_0x433971['delete'](_0x348cff),_0x433971['size']===0x0&&this['_taskSubscriptions']['delete'](_0x348cff['taskId']));}['disconnect'](){this['reconnectTimeout']&&(clearTimeout(this['reconnectTimeout']),this['reconnectTimeout']=null);this['_taskSubscriptions']['forEach']((_0x4b0cae,_0x216ca7)=>{_0x4b0cae['forEach'](_0x2b6f25=>{_0x2b6f25['type']==='direct'&&_0x2b6f25['eventSource']&&_0x2b6f25['eventSource']['close']();});}),this['_taskSubscriptions']['clear']();if(this['useSharedWorker']&&this['port'])try{this['port']['postMessage']({'action':'disconnect'});}catch(_0x498bab){}this['eventSource']&&(this['eventSource']['close'](),this['eventSource']=null),this['connected']=![];}['isConnected'](){return this['connected'];}['isUsingSharedWorker'](){return this['useSharedWorker'];}}let globalClient=null;export function getTaskUpdatesClient(){return!globalClient&&(globalClient=new TaskUpdatesClient()),globalClient;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const ports=new Set();let eventSource=null,currentUserId=null,reconnectTimeout=null,reconnectAttempts=0x0;const MAX_RECONNECT_DELAY=0x7530,taskStreams=new Map(),TASK_STREAM_EVENTS=['activity','logs','metadata','summary','changed-files','app-server-status','complete'];function connect(
|
|
1
|
+
const ports=new Set();let eventSource=null,currentUserId=null,reconnectTimeout=null,reconnectAttempts=0x0;const MAX_RECONNECT_DELAY=0x7530,taskStreams=new Map(),TASK_STREAM_EVENTS=['activity','logs','metadata','summary','changed-files','app-server-status','complete'];function connect(_0x358e1a){eventSource&¤tUserId!==_0x358e1a&&(eventSource['close'](),eventSource=null);if(eventSource&&eventSource['readyState']!==EventSource['CLOSED'])return;currentUserId=_0x358e1a;const _0x4a0e41=_0x358e1a&&_0x358e1a!=='me'?'?userId='+_0x358e1a:'';try{eventSource=new EventSource('/tasks/updates'+_0x4a0e41),eventSource['addEventListener']('snapshot',_0x947118=>{broadcast({'type':'snapshot','data':_0x947118['data']}),reconnectAttempts=0x0;}),eventSource['addEventListener']('activity',_0x51b259=>{broadcast({'type':'activity','data':_0x51b259['data']});}),eventSource['addEventListener']('status',_0x551b0f=>{broadcast({'type':'status','data':_0x551b0f['data']});}),eventSource['addEventListener']('new-task',_0x29432b=>{broadcast({'type':'new-task','data':_0x29432b['data']});}),eventSource['addEventListener']('queue-position',_0x41f206=>{broadcast({'type':'queue-position','data':_0x41f206['data']});}),eventSource['addEventListener']('open',()=>{broadcast({'type':'connected'}),reconnectAttempts=0x0;}),eventSource['addEventListener']('error',_0x303062=>{console['error']('[SSE\x20Worker]\x20Connection\x20error:',_0x303062),broadcast({'type':'error','error':'Connection\x20error'}),eventSource&&(eventSource['close'](),eventSource=null),scheduleReconnect();});}catch(_0x30804c){console['error']('[SSE\x20Worker]\x20Failed\x20to\x20create\x20EventSource:',_0x30804c),broadcast({'type':'error','error':_0x30804c['message']}),scheduleReconnect();}}function scheduleReconnect(){reconnectTimeout&&clearTimeout(reconnectTimeout);if(ports['size']===0x0)return;const _0x2da189=Math['min'](0x3e8*Math['pow'](0x2,reconnectAttempts),MAX_RECONNECT_DELAY);reconnectAttempts++,console['log']('[SSE\x20Worker]\x20Scheduling\x20reconnect\x20in\x20'+_0x2da189+'ms\x20(attempt\x20'+reconnectAttempts+')'),reconnectTimeout=setTimeout(()=>{ports['size']>0x0&&connect(currentUserId);},_0x2da189);}function broadcast(_0x41500f){const _0x114499=[];ports['forEach'](_0x1eba7a=>{try{_0x1eba7a['postMessage'](_0x41500f);}catch(_0x1921f3){console['warn']('[SSE\x20Worker]\x20Failed\x20to\x20send\x20to\x20port,\x20removing:',_0x1921f3),_0x114499['push'](_0x1eba7a);}}),_0x114499['length']>0x0&&cleanUpDeadPorts(_0x114499),ports['size']===0x0&&eventSource&&(console['log']('[SSE\x20Worker]\x20No\x20more\x20connected\x20ports,\x20closing\x20SSE'),eventSource['close'](),eventSource=null,reconnectTimeout&&(clearTimeout(reconnectTimeout),reconnectTimeout=null));}function subscribeTask(_0x4ceaf6,_0x33ca37){let _0x30f77c=taskStreams['get'](_0x33ca37);!_0x30f77c&&(_0x30f77c={'eventSource':null,'reconnectTimeout':null,'reconnectAttempts':0x0,'subscribedPorts':new Set()},taskStreams['set'](_0x33ca37,_0x30f77c));_0x30f77c['subscribedPorts']['add'](_0x4ceaf6);if(!_0x30f77c['eventSource']||_0x30f77c['eventSource']['readyState']===EventSource['CLOSED'])connectTaskStream(_0x33ca37);else{if(_0x30f77c['eventSource']['readyState']===EventSource['OPEN'])try{_0x4ceaf6['postMessage']({'type':'task:connected','taskId':_0x33ca37});}catch(_0x3e1f86){}}}function unsubscribeTask(_0x27bb88,_0x390513){const _0x21f67f=taskStreams['get'](_0x390513);if(!_0x21f67f)return;_0x21f67f['subscribedPorts']['delete'](_0x27bb88),_0x21f67f['subscribedPorts']['size']===0x0&&deferredCloseTaskStream(_0x390513);}function connectTaskStream(_0x12242a){const _0xf8e919=taskStreams['get'](_0x12242a);if(!_0xf8e919)return;_0xf8e919['eventSource']&&(_0xf8e919['eventSource']['close'](),_0xf8e919['eventSource']=null);try{_0xf8e919['eventSource']=new EventSource('/tasks/'+_0x12242a+'/stream');for(const _0x42533c of TASK_STREAM_EVENTS){_0xf8e919['eventSource']['addEventListener'](_0x42533c,_0x5da0d3=>{broadcastToTask(_0x12242a,'task:'+_0x42533c,_0x5da0d3['data']),_0xf8e919['reconnectAttempts']=0x0;});}_0xf8e919['eventSource']['addEventListener']('open',()=>{broadcastToTask(_0x12242a,'task:connected','{}'),_0xf8e919['reconnectAttempts']=0x0;}),_0xf8e919['eventSource']['addEventListener']('error',()=>{broadcastToTask(_0x12242a,'task:error',JSON['stringify']({'error':'Connection\x20error'})),_0xf8e919['eventSource']&&(_0xf8e919['eventSource']['close'](),_0xf8e919['eventSource']=null),scheduleTaskReconnect(_0x12242a);});}catch(_0x29d090){console['error']('[SSE\x20Worker]\x20Failed\x20to\x20create\x20task\x20EventSource\x20for\x20'+_0x12242a+':',_0x29d090),broadcastToTask(_0x12242a,'task:error',JSON['stringify']({'error':_0x29d090['message']})),scheduleTaskReconnect(_0x12242a);}}function broadcastToTask(_0x199644,_0x548cd3,_0x4c15f8){const _0x233f58=taskStreams['get'](_0x199644);if(!_0x233f58)return;const _0x25fe4b=[];_0x233f58['subscribedPorts']['forEach'](_0x1b362f=>{try{_0x1b362f['postMessage']({'type':_0x548cd3,'taskId':_0x199644,'data':_0x4c15f8});}catch(_0xfc9fa1){_0x25fe4b['push'](_0x1b362f);}}),_0x25fe4b['length']>0x0&&(_0x25fe4b['forEach'](_0x4701cf=>_0x233f58['subscribedPorts']['delete'](_0x4701cf)),cleanUpDeadPorts(_0x25fe4b),_0x233f58['subscribedPorts']['size']===0x0&&closeTaskStream(_0x199644));}function closeTaskStream(_0x25d885){const _0xffa212=taskStreams['get'](_0x25d885);if(!_0xffa212)return;_0xffa212['eventSource']&&_0xffa212['eventSource']['close'](),_0xffa212['reconnectTimeout']&&clearTimeout(_0xffa212['reconnectTimeout']),taskStreams['delete'](_0x25d885);}function deferredCloseTaskStream(_0x231ac8){setTimeout(()=>{const _0x19b06d=taskStreams['get'](_0x231ac8);_0x19b06d&&_0x19b06d['subscribedPorts']['size']===0x0&&closeTaskStream(_0x231ac8);},0x0);}function scheduleTaskReconnect(_0x14ddfd){const _0x16147c=taskStreams['get'](_0x14ddfd);if(!_0x16147c||_0x16147c['subscribedPorts']['size']===0x0)return;_0x16147c['reconnectTimeout']&&clearTimeout(_0x16147c['reconnectTimeout']);const _0x10e83c=Math['min'](0x3e8*Math['pow'](0x2,_0x16147c['reconnectAttempts']),MAX_RECONNECT_DELAY);_0x16147c['reconnectAttempts']++,console['log']('[SSE\x20Worker]\x20Scheduling\x20task\x20stream\x20reconnect\x20for\x20'+_0x14ddfd+'\x20in\x20'+_0x10e83c+'ms'),_0x16147c['reconnectTimeout']=setTimeout(()=>{_0x16147c['subscribedPorts']['size']>0x0&&connectTaskStream(_0x14ddfd);},_0x10e83c);}function cleanUpDeadPorts(_0x3a0b1a){for(const _0xe45790 of _0x3a0b1a){ports['delete'](_0xe45790),taskStreams['forEach']((_0x2f4604,_0xb8b5cb)=>{_0x2f4604['subscribedPorts']['delete'](_0xe45790),_0x2f4604['subscribedPorts']['size']===0x0&&closeTaskStream(_0xb8b5cb);});}}function removePortFromAllTasks(_0x1a043c){taskStreams['forEach']((_0x9c1cd1,_0x25fdb0)=>{_0x9c1cd1['subscribedPorts']['has'](_0x1a043c)&&(_0x9c1cd1['subscribedPorts']['delete'](_0x1a043c),_0x9c1cd1['subscribedPorts']['size']===0x0&&closeTaskStream(_0x25fdb0));});}self['onconnect']=function(_0x1f53dc){const _0x292132=_0x1f53dc['ports'][0x0];ports['add'](_0x292132),console['log']('[SSE\x20Worker]\x20New\x20port\x20connected.\x20Total\x20ports:\x20'+ports['size']),_0x292132['onmessage']=function(_0x51c34f){const {action:_0x207d6f,userId:_0x408896,taskId:_0x55b503}=_0x51c34f['data'];switch(_0x207d6f){case'connect':connect(_0x408896);eventSource&&eventSource['readyState']===EventSource['OPEN']&&_0x292132['postMessage']({'type':'connected'});break;case'disconnect':ports['delete'](_0x292132),removePortFromAllTasks(_0x292132),console['log']('[SSE\x20Worker]\x20Port\x20disconnected.\x20Total\x20ports:\x20'+ports['size']);ports['size']===0x0&&eventSource&&(eventSource['close'](),eventSource=null,reconnectTimeout&&(clearTimeout(reconnectTimeout),reconnectTimeout=null));break;case'changeFilter':_0x408896!==currentUserId&&connect(_0x408896);break;case'subscribeTask':subscribeTask(_0x292132,_0x55b503);break;case'unsubscribeTask':unsubscribeTask(_0x292132,_0x55b503);break;default:console['warn']('[SSE\x20Worker]\x20Unknown\x20action:',_0x207d6f);}},_0x292132['onmessageerror']=function(_0x28ac89){console['error']('[SSE\x20Worker]\x20Port\x20message\x20error:',_0x28ac89),ports['delete'](_0x292132),removePortFromAllTasks(_0x292132);},_0x292132['start']();};
|
|
@@ -1949,6 +1949,10 @@ body.task-list-open .task-sticky-header {
|
|
|
1949
1949
|
color: #4285f4; /* Gemini blue */
|
|
1950
1950
|
}
|
|
1951
1951
|
|
|
1952
|
+
.sticky-agent-icon[data-agent="bob"] {
|
|
1953
|
+
color: #6366F1; /* Bob indigo */
|
|
1954
|
+
}
|
|
1955
|
+
|
|
1952
1956
|
.sticky-agent-name {
|
|
1953
1957
|
font-size: 13px;
|
|
1954
1958
|
font-weight: 600;
|
|
@@ -2144,6 +2148,11 @@ body.task-list-open .task-sticky-header {
|
|
|
2144
2148
|
color: #4285f4; /* Gemini blue */
|
|
2145
2149
|
}
|
|
2146
2150
|
|
|
2151
|
+
.task-tab .task-tab-icon[data-agent="bob"],
|
|
2152
|
+
.task-tab-mini .task-tab-icon[data-agent="bob"] {
|
|
2153
|
+
color: #6366F1; /* Bob indigo */
|
|
2154
|
+
}
|
|
2155
|
+
|
|
2147
2156
|
.task-tab .task-tab-icon,
|
|
2148
2157
|
.task-tab-mini .task-tab-icon {
|
|
2149
2158
|
color: var(--color-text-muted);
|
|
@@ -3663,6 +3672,12 @@ button:disabled,
|
|
|
3663
3672
|
border-color: rgba(66, 133, 244, 0.35);
|
|
3664
3673
|
}
|
|
3665
3674
|
|
|
3675
|
+
.task-agent-icon[data-agent="bob"] {
|
|
3676
|
+
color: #6366F1;
|
|
3677
|
+
background: rgba(99, 102, 241, 0.12);
|
|
3678
|
+
border-color: rgba(99, 102, 241, 0.35);
|
|
3679
|
+
}
|
|
3680
|
+
|
|
3666
3681
|
/* Judge task icon - uses gold/amber to match ⚖️ emoji appearance */
|
|
3667
3682
|
.task-agent-icon.is-judge {
|
|
3668
3683
|
color: #b8860b !important;
|
|
@@ -6313,6 +6328,50 @@ select option[value=""] {
|
|
|
6313
6328
|
box-shadow: 0 4px 16px rgba(66, 133, 244, 0.15);
|
|
6314
6329
|
}
|
|
6315
6330
|
|
|
6331
|
+
/* Bob (IBM) - Indigo #6366F1 */
|
|
6332
|
+
.agent-card[data-agent="bob"]:not([data-count="0"]) {
|
|
6333
|
+
background: linear-gradient(135deg, rgba(99, 102, 241, 0.1) 0%, rgba(99, 102, 241, 0.05) 100%);
|
|
6334
|
+
border-color: rgba(99, 102, 241, 0.4);
|
|
6335
|
+
}
|
|
6336
|
+
|
|
6337
|
+
.agent-card[data-agent="bob"]:not([data-count="0"]) .agent-icon svg {
|
|
6338
|
+
opacity: 1;
|
|
6339
|
+
color: #6366F1;
|
|
6340
|
+
}
|
|
6341
|
+
|
|
6342
|
+
.agent-card[data-agent="bob"]:not([data-count="0"]) .agent-btn-decrement,
|
|
6343
|
+
.agent-card[data-agent="bob"]:not([data-count="0"]) .agent-btn-increment {
|
|
6344
|
+
color: #6366F1;
|
|
6345
|
+
opacity: 0.6;
|
|
6346
|
+
}
|
|
6347
|
+
|
|
6348
|
+
.agent-card[data-agent="bob"]:not([data-count="0"]) .agent-btn-decrement:hover,
|
|
6349
|
+
.agent-card[data-agent="bob"]:not([data-count="0"]) .agent-btn-increment:hover {
|
|
6350
|
+
opacity: 1;
|
|
6351
|
+
background: rgba(99, 102, 241, 0.1);
|
|
6352
|
+
}
|
|
6353
|
+
|
|
6354
|
+
.agent-card[data-agent="bob"]:not([data-count="0"]) .agent-count-badge {
|
|
6355
|
+
background: #6366F1;
|
|
6356
|
+
opacity: 1;
|
|
6357
|
+
transform: scale(1);
|
|
6358
|
+
}
|
|
6359
|
+
|
|
6360
|
+
.agent-card[data-agent="bob"]:hover {
|
|
6361
|
+
border-color: rgba(99, 102, 241, 0.6);
|
|
6362
|
+
box-shadow: 0 4px 16px rgba(99, 102, 241, 0.15);
|
|
6363
|
+
}
|
|
6364
|
+
|
|
6365
|
+
.agent-card.agent-disabled {
|
|
6366
|
+
display: none;
|
|
6367
|
+
}
|
|
6368
|
+
.judge-agent-btn.agent-disabled {
|
|
6369
|
+
display: none;
|
|
6370
|
+
}
|
|
6371
|
+
.agent-card.agent-disabled .agent-icon {
|
|
6372
|
+
cursor: default;
|
|
6373
|
+
}
|
|
6374
|
+
|
|
6316
6375
|
/* Focus states for accessibility */
|
|
6317
6376
|
.agent-card:focus-visible {
|
|
6318
6377
|
outline: 2px solid var(--color-accent);
|
|
@@ -6386,6 +6445,11 @@ select option[value=""] {
|
|
|
6386
6445
|
font-weight: 600;
|
|
6387
6446
|
}
|
|
6388
6447
|
|
|
6448
|
+
.compact-counter[data-agent="bob"] .counter-display {
|
|
6449
|
+
color: #6366F1;
|
|
6450
|
+
font-weight: 600;
|
|
6451
|
+
}
|
|
6452
|
+
|
|
6389
6453
|
.btn-icon-launch {
|
|
6390
6454
|
width: 36px;
|
|
6391
6455
|
height: 36px;
|
|
@@ -14130,6 +14194,9 @@ input.toggle-switch:focus {
|
|
|
14130
14194
|
.compare-agent-header.is-winner .agent-icon[data-agent="gemini"] { color: #4285f4; }
|
|
14131
14195
|
.compare-agent-header.is-winner .agent-icon[data-agent="gemini"] ~ .agent-name { color: #4285f4; }
|
|
14132
14196
|
|
|
14197
|
+
.compare-agent-header.is-winner .agent-icon[data-agent="bob"] { color: #6366F1; }
|
|
14198
|
+
.compare-agent-header.is-winner .agent-icon[data-agent="bob"] ~ .agent-name { color: #6366F1; }
|
|
14199
|
+
|
|
14133
14200
|
.compare-agent-header .agent-name {
|
|
14134
14201
|
font-size: 14px;
|
|
14135
14202
|
font-weight: 700;
|
|
@@ -14968,7 +15035,7 @@ input.toggle-switch:focus {
|
|
|
14968
15035
|
/* Judge Agent Selector - Enhanced */
|
|
14969
15036
|
.judge-agent-selector {
|
|
14970
15037
|
display: grid;
|
|
14971
|
-
grid-template-columns: repeat(
|
|
15038
|
+
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
|
|
14972
15039
|
gap: 12px;
|
|
14973
15040
|
}
|
|
14974
15041
|
|
|
@@ -15010,6 +15077,10 @@ input.toggle-switch:focus {
|
|
|
15010
15077
|
background: radial-gradient(circle at center, rgba(66, 133, 244, 0.15) 0%, transparent 70%);
|
|
15011
15078
|
}
|
|
15012
15079
|
|
|
15080
|
+
.judge-agent-btn[data-agent="bob"] .agent-card-glow {
|
|
15081
|
+
background: radial-gradient(circle at center, rgba(99, 102, 241, 0.15) 0%, transparent 70%);
|
|
15082
|
+
}
|
|
15083
|
+
|
|
15013
15084
|
.judge-agent-btn:hover .agent-card-glow {
|
|
15014
15085
|
opacity: 0.5;
|
|
15015
15086
|
}
|
|
@@ -15046,6 +15117,11 @@ input.toggle-switch:focus {
|
|
|
15046
15117
|
box-shadow: 0 4px 16px rgba(66, 133, 244, 0.25);
|
|
15047
15118
|
}
|
|
15048
15119
|
|
|
15120
|
+
.judge-agent-btn[data-agent="bob"].selected {
|
|
15121
|
+
border-color: #6366F1;
|
|
15122
|
+
box-shadow: 0 4px 16px rgba(99, 102, 241, 0.25);
|
|
15123
|
+
}
|
|
15124
|
+
|
|
15049
15125
|
.judge-agent-icon {
|
|
15050
15126
|
width: 32px;
|
|
15051
15127
|
height: 32px;
|
|
@@ -15075,6 +15151,10 @@ input.toggle-switch:focus {
|
|
|
15075
15151
|
color: #4285f4;
|
|
15076
15152
|
}
|
|
15077
15153
|
|
|
15154
|
+
.judge-agent-btn[data-agent="bob"] .judge-agent-icon {
|
|
15155
|
+
color: #6366F1;
|
|
15156
|
+
}
|
|
15157
|
+
|
|
15078
15158
|
.judge-agent-btn:hover .judge-agent-icon,
|
|
15079
15159
|
.judge-agent-btn.selected .judge-agent-icon {
|
|
15080
15160
|
transform: scale(1.1);
|
|
@@ -15396,6 +15476,7 @@ input.toggle-switch:focus {
|
|
|
15396
15476
|
.timeline-agent[data-agent="claude"] .timeline-agent-icon { color: #D97757; }
|
|
15397
15477
|
.timeline-agent[data-agent="codex"] .timeline-agent-icon { color: #10a37f; }
|
|
15398
15478
|
.timeline-agent[data-agent="gemini"] .timeline-agent-icon { color: #4285f4; }
|
|
15479
|
+
.timeline-agent[data-agent="bob"] .timeline-agent-icon { color: #6366F1; }
|
|
15399
15480
|
|
|
15400
15481
|
.timeline-time {
|
|
15401
15482
|
font-size: 12px;
|
|
@@ -15914,6 +15995,11 @@ input.toggle-switch:focus {
|
|
|
15914
15995
|
color: #4285f4;
|
|
15915
15996
|
}
|
|
15916
15997
|
|
|
15998
|
+
.judgment-judge[data-agent="bob"] .judgment-agent-icon,
|
|
15999
|
+
.judgment-winner[data-agent="bob"] .judgment-agent-icon {
|
|
16000
|
+
color: #6366F1;
|
|
16001
|
+
}
|
|
16002
|
+
|
|
15917
16003
|
.judgment-actions {
|
|
15918
16004
|
/* Keep this as a normal table-cell so vertical alignment works consistently.
|
|
15919
16005
|
Use margins for spacing instead of flex layout on the <td>. */
|
|
@@ -16379,6 +16465,11 @@ input.toggle-switch:focus {
|
|
|
16379
16465
|
color: #4285f4;
|
|
16380
16466
|
}
|
|
16381
16467
|
|
|
16468
|
+
.variant-feedback-agent[data-agent="bob"] .variant-agent-icon {
|
|
16469
|
+
background: rgba(99, 102, 241, 0.15);
|
|
16470
|
+
color: #6366F1;
|
|
16471
|
+
}
|
|
16472
|
+
|
|
16382
16473
|
.variant-winner-badge {
|
|
16383
16474
|
display: inline-flex;
|
|
16384
16475
|
align-items: center;
|
|
@@ -19417,6 +19508,10 @@ body.task-list-open .task-list-side-trigger {
|
|
|
19417
19508
|
color: #4285f4;
|
|
19418
19509
|
}
|
|
19419
19510
|
|
|
19511
|
+
.model-provider-logo[data-agent="bob"] {
|
|
19512
|
+
color: #6366F1;
|
|
19513
|
+
}
|
|
19514
|
+
|
|
19420
19515
|
.model-provider-name {
|
|
19421
19516
|
font-weight: 600;
|
|
19422
19517
|
font-size: 14px;
|
|
@@ -20255,6 +20350,11 @@ body.task-list-open .task-list-side-trigger {
|
|
|
20255
20350
|
background: rgba(66, 133, 244, 0.1);
|
|
20256
20351
|
}
|
|
20257
20352
|
|
|
20353
|
+
.vgm-variant-icon[data-agent="bob"] {
|
|
20354
|
+
color: #6366F1;
|
|
20355
|
+
background: rgba(99, 102, 241, 0.1);
|
|
20356
|
+
}
|
|
20357
|
+
|
|
20258
20358
|
/* Variant info */
|
|
20259
20359
|
.vgm-variant-info {
|
|
20260
20360
|
flex: 1;
|
|
@@ -39,8 +39,16 @@
|
|
|
39
39
|
<script type="module" src="markdown-editor.js?v=2"></script>
|
|
40
40
|
<script src="markdown-file-editor.js?v=2"></script>
|
|
41
41
|
<script type="module" src="comments-widget.js?v=2"></script>
|
|
42
|
-
<script type="module" src="task.js?v=
|
|
42
|
+
<script type="module" src="task.js?v=79"></script>
|
|
43
43
|
<!-- Dev QA shortcut: Ctrl+Shift+Q to launch current page in QA mode -->
|
|
44
|
+
<style>
|
|
45
|
+
.agent-card.agent-disabled {
|
|
46
|
+
display: none;
|
|
47
|
+
}
|
|
48
|
+
.judge-agent-btn.agent-disabled {
|
|
49
|
+
display: none;
|
|
50
|
+
}
|
|
51
|
+
</style>
|
|
44
52
|
</head>
|
|
45
53
|
<body>
|
|
46
54
|
<button id="task-list-side-trigger" class="task-list-side-trigger" title="Browse other tasks">
|
|
@@ -1318,6 +1326,17 @@
|
|
|
1318
1326
|
<div class="agent-count-badge" id="resubmit-gemini-count-display">0</div>
|
|
1319
1327
|
<input type="number" min="0" max="5" step="1" id="resubmit-gemini-count" value="0" hidden readonly aria-label="Number of Gemini containers">
|
|
1320
1328
|
</div>
|
|
1329
|
+
<div class="agent-card" data-agent="bob" data-count="0">
|
|
1330
|
+
<button type="button" class="agent-btn-decrement" data-counter="down" aria-label="Decrease Bob count" title="Remove Bob">−</button>
|
|
1331
|
+
<div class="agent-icon" role="button" tabindex="0" aria-label="Bob" title="Bob (click to add, right-click to remove)">
|
|
1332
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round">
|
|
1333
|
+
<rect x="3.5" y="10.5" width="17" height="12" rx="3"></rect><circle cx="9" cy="15.5" r="2" fill="currentColor" stroke="none"></circle><circle cx="15" cy="15.5" r="2" fill="currentColor" stroke="none"></circle><path d="M10 20q2 1.2 4 0"></path><path d="M3.5 14.5a1.5 1.5 0 0 0 0 3" stroke-width="1.7"></path><path d="M20.5 14.5a1.5 1.5 0 0 1 0 3" stroke-width="1.7"></path><path d="M2 10.5h20" stroke-width="2.5"></path><path d="M5 10.5V8c0-3 3.2-5.5 7-5.5s7 2.5 7 5.5v2.5" stroke-width="1.7"></path><path d="M5 7.5h14" stroke-width="1.2"></path>
|
|
1334
|
+
</svg>
|
|
1335
|
+
</div>
|
|
1336
|
+
<button type="button" class="agent-btn-increment" data-counter="up" aria-label="Increase Bob count" title="Add Bob">+</button>
|
|
1337
|
+
<div class="agent-count-badge" id="resubmit-bob-count-display">0</div>
|
|
1338
|
+
<input type="number" min="0" max="5" step="1" id="resubmit-bob-count" value="0" hidden readonly aria-label="Number of Bob containers">
|
|
1339
|
+
</div>
|
|
1321
1340
|
</div>
|
|
1322
1341
|
|
|
1323
1342
|
<!-- Agent Selection Hint -->
|
|
@@ -1443,6 +1462,17 @@
|
|
|
1443
1462
|
<div class="agent-count-badge" id="save-objective-gemini-count-display">0</div>
|
|
1444
1463
|
<input type="number" min="0" max="5" step="1" id="save-objective-gemini-count" value="0" hidden readonly aria-label="Number of Gemini agents">
|
|
1445
1464
|
</div>
|
|
1465
|
+
<div class="agent-card" data-agent="bob" data-count="0">
|
|
1466
|
+
<button type="button" class="agent-btn-decrement" data-counter="down" aria-label="Decrease Bob count" title="Remove Bob">−</button>
|
|
1467
|
+
<div class="agent-icon" role="button" tabindex="0" aria-label="Bob" title="Bob (click to add, right-click to remove)">
|
|
1468
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round">
|
|
1469
|
+
<rect x="3.5" y="10.5" width="17" height="12" rx="3"></rect><circle cx="9" cy="15.5" r="2" fill="currentColor" stroke="none"></circle><circle cx="15" cy="15.5" r="2" fill="currentColor" stroke="none"></circle><path d="M10 20q2 1.2 4 0"></path><path d="M3.5 14.5a1.5 1.5 0 0 0 0 3" stroke-width="1.7"></path><path d="M20.5 14.5a1.5 1.5 0 0 1 0 3" stroke-width="1.7"></path><path d="M2 10.5h20" stroke-width="2.5"></path><path d="M5 10.5V8c0-3 3.2-5.5 7-5.5s7 2.5 7 5.5v2.5" stroke-width="1.7"></path><path d="M5 7.5h14" stroke-width="1.2"></path>
|
|
1470
|
+
</svg>
|
|
1471
|
+
</div>
|
|
1472
|
+
<button type="button" class="agent-btn-increment" data-counter="up" aria-label="Increase Bob count" title="Add Bob">+</button>
|
|
1473
|
+
<div class="agent-count-badge" id="save-objective-bob-count-display">0</div>
|
|
1474
|
+
<input type="number" min="0" max="5" step="1" id="save-objective-bob-count" value="0" hidden readonly aria-label="Number of Bob agents">
|
|
1475
|
+
</div>
|
|
1446
1476
|
</div>
|
|
1447
1477
|
<div class="agent-hint" id="save-objective-agent-hint" data-visible="true">
|
|
1448
1478
|
<span class="agent-hint-arrow">←</span>
|
|
@@ -1901,6 +1931,21 @@
|
|
|
1901
1931
|
</svg>
|
|
1902
1932
|
</span>
|
|
1903
1933
|
</button>
|
|
1934
|
+
<button class="judge-agent-btn" data-agent="bob" title="Bob - IBM's AI Assistant">
|
|
1935
|
+
<div class="agent-card-glow"></div>
|
|
1936
|
+
<span class="judge-agent-icon">
|
|
1937
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round">
|
|
1938
|
+
<rect x="3.5" y="10.5" width="17" height="12" rx="3"></rect><circle cx="9" cy="15.5" r="2" fill="currentColor" stroke="none"></circle><circle cx="15" cy="15.5" r="2" fill="currentColor" stroke="none"></circle><path d="M10 20q2 1.2 4 0"></path><path d="M3.5 14.5a1.5 1.5 0 0 0 0 3" stroke-width="1.7"></path><path d="M20.5 14.5a1.5 1.5 0 0 1 0 3" stroke-width="1.7"></path><path d="M2 10.5h20" stroke-width="2.5"></path><path d="M5 10.5V8c0-3 3.2-5.5 7-5.5s7 2.5 7 5.5v2.5" stroke-width="1.7"></path><path d="M5 7.5h14" stroke-width="1.2"></path>
|
|
1939
|
+
</svg>
|
|
1940
|
+
</span>
|
|
1941
|
+
<span class="judge-agent-name">Bob</span>
|
|
1942
|
+
<span class="judge-agent-desc">IBM</span>
|
|
1943
|
+
<span class="agent-selection-indicator">
|
|
1944
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3">
|
|
1945
|
+
<polyline points="20 6 9 17 4 12"></polyline>
|
|
1946
|
+
</svg>
|
|
1947
|
+
</span>
|
|
1948
|
+
</button>
|
|
1904
1949
|
</div>
|
|
1905
1950
|
</div>
|
|
1906
1951
|
|