 d7ad321176
			
		
	
	d7ad321176
	
	
	
		
			
			This comprehensive implementation includes: - FastAPI backend with MCP server integration - React/TypeScript frontend with Vite - PostgreSQL database with Redis caching - Grafana/Prometheus monitoring stack - Docker Compose orchestration - Full MCP protocol support for Claude Code integration Features: - Agent discovery and management across network - Visual workflow editor and execution engine - Real-time task coordination and monitoring - Multi-model support with specialized agents - Distributed development task allocation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| const { tokenChars } = require('./validation');
 | |
| 
 | |
| /**
 | |
|  * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.
 | |
|  *
 | |
|  * @param {String} header The field value of the header
 | |
|  * @return {Set} The subprotocol names
 | |
|  * @public
 | |
|  */
 | |
| function parse(header) {
 | |
|   const protocols = new Set();
 | |
|   let start = -1;
 | |
|   let end = -1;
 | |
|   let i = 0;
 | |
| 
 | |
|   for (i; i < header.length; i++) {
 | |
|     const code = header.charCodeAt(i);
 | |
| 
 | |
|     if (end === -1 && tokenChars[code] === 1) {
 | |
|       if (start === -1) start = i;
 | |
|     } else if (
 | |
|       i !== 0 &&
 | |
|       (code === 0x20 /* ' ' */ || code === 0x09) /* '\t' */
 | |
|     ) {
 | |
|       if (end === -1 && start !== -1) end = i;
 | |
|     } else if (code === 0x2c /* ',' */) {
 | |
|       if (start === -1) {
 | |
|         throw new SyntaxError(`Unexpected character at index ${i}`);
 | |
|       }
 | |
| 
 | |
|       if (end === -1) end = i;
 | |
| 
 | |
|       const protocol = header.slice(start, end);
 | |
| 
 | |
|       if (protocols.has(protocol)) {
 | |
|         throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`);
 | |
|       }
 | |
| 
 | |
|       protocols.add(protocol);
 | |
|       start = end = -1;
 | |
|     } else {
 | |
|       throw new SyntaxError(`Unexpected character at index ${i}`);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (start === -1 || end !== -1) {
 | |
|     throw new SyntaxError('Unexpected end of input');
 | |
|   }
 | |
| 
 | |
|   const protocol = header.slice(start, i);
 | |
| 
 | |
|   if (protocols.has(protocol)) {
 | |
|     throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`);
 | |
|   }
 | |
| 
 | |
|   protocols.add(protocol);
 | |
|   return protocols;
 | |
| }
 | |
| 
 | |
| module.exports = { parse };
 |