 e89f2f4b7b
			
		
	
	e89f2f4b7b
	
	
	
		
			
			Created 10 detailed GitHub issues covering: - Project activation and management UI (#1-2) - Worker node coordination and visualization (#3-4) - Automated GitHub repository scanning (#5) - Intelligent model-to-issue matching (#6) - Multi-model task execution system (#7) - N8N workflow integration (#8) - Hive-Bzzz P2P bridge (#9) - Peer assistance protocol (#10) Each issue includes detailed specifications, acceptance criteria, technical implementation notes, and dependency mapping. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * Helper functions to work with docblock comments.
 | |
|  */
 | |
| const DOCLET_PATTERN = /^@(\w+)(?:$|\s((?:[^](?!^@\w))*))/gim;
 | |
| function parseDocblock(str) {
 | |
|     // Does not use \s in the regex as this would match also \n and conflicts
 | |
|     // with windows line endings.
 | |
|     return str.replace(/^[ \t]*\*[ \t]?/gm, '').trim();
 | |
| }
 | |
| const DOCBLOCK_HEADER = /^\*\s/;
 | |
| /**
 | |
|  * Given a path, this function returns the closest preceding docblock if it
 | |
|  * exists.
 | |
|  */
 | |
| export function getDocblock(path, trailing = false) {
 | |
|     let comments = [];
 | |
|     if (trailing && path.node.trailingComments) {
 | |
|         comments = path.node.trailingComments.filter((comment) => comment.type === 'CommentBlock' && DOCBLOCK_HEADER.test(comment.value));
 | |
|     }
 | |
|     else if (path.node.leadingComments) {
 | |
|         comments = path.node.leadingComments.filter((comment) => comment.type === 'CommentBlock' && DOCBLOCK_HEADER.test(comment.value));
 | |
|     }
 | |
|     if (comments.length > 0) {
 | |
|         return parseDocblock(comments[comments.length - 1].value);
 | |
|     }
 | |
|     return null;
 | |
| }
 | |
| /**
 | |
|  * Given a string, this functions returns an object with doclet names as keys
 | |
|  * and their "content" as values.
 | |
|  */
 | |
| export function getDoclets(str) {
 | |
|     const doclets = Object.create(null);
 | |
|     let match;
 | |
|     while ((match = DOCLET_PATTERN.exec(str))) {
 | |
|         doclets[match[1]] = match[2] || true;
 | |
|     }
 | |
|     return doclets;
 | |
| }
 |