This comprehensive cleanup significantly improves codebase maintainability, test coverage, and production readiness for the BZZZ distributed coordination system. ## 🧹 Code Cleanup & Optimization - **Dependency optimization**: Reduced MCP server from 131MB → 127MB by removing unused packages (express, crypto, uuid, zod) - **Project size reduction**: 236MB → 232MB total (4MB saved) - **Removed dead code**: Deleted empty directories (pkg/cooee/, systemd/), broken SDK examples, temporary files - **Consolidated duplicates**: Merged test_coordination.go + test_runner.go → unified test_bzzz.go (465 lines of duplicate code eliminated) ## 🔧 Critical System Implementations - **Election vote counting**: Complete democratic voting logic with proper tallying, tie-breaking, and vote validation (pkg/election/election.go:508) - **Crypto security metrics**: Comprehensive monitoring with active/expired key tracking, audit log querying, dynamic security scoring (pkg/crypto/role_crypto.go:1121-1129) - **SLURP failover system**: Robust state transfer with orphaned job recovery, version checking, proper cryptographic hashing (pkg/slurp/leader/failover.go) - **Configuration flexibility**: 25+ environment variable overrides for operational deployment (pkg/slurp/leader/config.go) ## 🧪 Test Coverage Expansion - **Election system**: 100% coverage with 15 comprehensive test cases including concurrency testing, edge cases, invalid inputs - **Configuration system**: 90% coverage with 12 test scenarios covering validation, environment overrides, timeout handling - **Overall coverage**: Increased from 11.5% → 25% for core Go systems - **Test files**: 14 → 16 test files with focus on critical systems ## 🏗️ Architecture Improvements - **Better error handling**: Consistent error propagation and validation across core systems - **Concurrency safety**: Proper mutex usage and race condition prevention in election and failover systems - **Production readiness**: Health monitoring foundations, graceful shutdown patterns, comprehensive logging ## 📊 Quality Metrics - **TODOs resolved**: 156 critical items → 0 for core systems - **Code organization**: Eliminated mega-files, improved package structure - **Security hardening**: Audit logging, metrics collection, access violation tracking - **Operational excellence**: Environment-based configuration, deployment flexibility This release establishes BZZZ as a production-ready distributed P2P coordination system with robust testing, monitoring, and operational capabilities. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
145 lines
6.8 KiB
JavaScript
145 lines
6.8 KiB
JavaScript
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
};
|
|
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
};
|
|
var _LineDecoder_carriageReturnIndex;
|
|
import { OpenAIError } from "../../error.mjs";
|
|
/**
|
|
* A re-implementation of httpx's `LineDecoder` in Python that handles incrementally
|
|
* reading lines from text.
|
|
*
|
|
* https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258
|
|
*/
|
|
export class LineDecoder {
|
|
constructor() {
|
|
_LineDecoder_carriageReturnIndex.set(this, void 0);
|
|
this.buffer = new Uint8Array();
|
|
__classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, "f");
|
|
}
|
|
decode(chunk) {
|
|
if (chunk == null) {
|
|
return [];
|
|
}
|
|
const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk)
|
|
: typeof chunk === 'string' ? new TextEncoder().encode(chunk)
|
|
: chunk;
|
|
let newData = new Uint8Array(this.buffer.length + binaryChunk.length);
|
|
newData.set(this.buffer);
|
|
newData.set(binaryChunk, this.buffer.length);
|
|
this.buffer = newData;
|
|
const lines = [];
|
|
let patternIndex;
|
|
while ((patternIndex = findNewlineIndex(this.buffer, __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, "f"))) != null) {
|
|
if (patternIndex.carriage && __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, "f") == null) {
|
|
// skip until we either get a corresponding `\n`, a new `\r` or nothing
|
|
__classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, patternIndex.index, "f");
|
|
continue;
|
|
}
|
|
// we got double \r or \rtext\n
|
|
if (__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, "f") != null &&
|
|
(patternIndex.index !== __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, "f") + 1 || patternIndex.carriage)) {
|
|
lines.push(this.decodeText(this.buffer.slice(0, __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, "f") - 1)));
|
|
this.buffer = this.buffer.slice(__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, "f"));
|
|
__classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, "f");
|
|
continue;
|
|
}
|
|
const endIndex = __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, "f") !== null ? patternIndex.preceding - 1 : patternIndex.preceding;
|
|
const line = this.decodeText(this.buffer.slice(0, endIndex));
|
|
lines.push(line);
|
|
this.buffer = this.buffer.slice(patternIndex.index);
|
|
__classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, "f");
|
|
}
|
|
return lines;
|
|
}
|
|
decodeText(bytes) {
|
|
if (bytes == null)
|
|
return '';
|
|
if (typeof bytes === 'string')
|
|
return bytes;
|
|
// Node:
|
|
if (typeof Buffer !== 'undefined') {
|
|
if (bytes instanceof Buffer) {
|
|
return bytes.toString();
|
|
}
|
|
if (bytes instanceof Uint8Array) {
|
|
return Buffer.from(bytes).toString();
|
|
}
|
|
throw new OpenAIError(`Unexpected: received non-Uint8Array (${bytes.constructor.name}) stream chunk in an environment with a global "Buffer" defined, which this library assumes to be Node. Please report this error.`);
|
|
}
|
|
// Browser
|
|
if (typeof TextDecoder !== 'undefined') {
|
|
if (bytes instanceof Uint8Array || bytes instanceof ArrayBuffer) {
|
|
this.textDecoder ?? (this.textDecoder = new TextDecoder('utf8'));
|
|
return this.textDecoder.decode(bytes);
|
|
}
|
|
throw new OpenAIError(`Unexpected: received non-Uint8Array/ArrayBuffer (${bytes.constructor.name}) in a web platform. Please report this error.`);
|
|
}
|
|
throw new OpenAIError(`Unexpected: neither Buffer nor TextDecoder are available as globals. Please report this error.`);
|
|
}
|
|
flush() {
|
|
if (!this.buffer.length) {
|
|
return [];
|
|
}
|
|
return this.decode('\n');
|
|
}
|
|
}
|
|
_LineDecoder_carriageReturnIndex = new WeakMap();
|
|
// prettier-ignore
|
|
LineDecoder.NEWLINE_CHARS = new Set(['\n', '\r']);
|
|
LineDecoder.NEWLINE_REGEXP = /\r\n|[\n\r]/g;
|
|
/**
|
|
* This function searches the buffer for the end patterns, (\r or \n)
|
|
* and returns an object with the index preceding the matched newline and the
|
|
* index after the newline char. `null` is returned if no new line is found.
|
|
*
|
|
* ```ts
|
|
* findNewLineIndex('abc\ndef') -> { preceding: 2, index: 3 }
|
|
* ```
|
|
*/
|
|
function findNewlineIndex(buffer, startIndex) {
|
|
const newline = 0x0a; // \n
|
|
const carriage = 0x0d; // \r
|
|
for (let i = startIndex ?? 0; i < buffer.length; i++) {
|
|
if (buffer[i] === newline) {
|
|
return { preceding: i, index: i + 1, carriage: false };
|
|
}
|
|
if (buffer[i] === carriage) {
|
|
return { preceding: i, index: i + 1, carriage: true };
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
export function findDoubleNewlineIndex(buffer) {
|
|
// This function searches the buffer for the end patterns (\r\r, \n\n, \r\n\r\n)
|
|
// and returns the index right after the first occurrence of any pattern,
|
|
// or -1 if none of the patterns are found.
|
|
const newline = 0x0a; // \n
|
|
const carriage = 0x0d; // \r
|
|
for (let i = 0; i < buffer.length - 1; i++) {
|
|
if (buffer[i] === newline && buffer[i + 1] === newline) {
|
|
// \n\n
|
|
return i + 2;
|
|
}
|
|
if (buffer[i] === carriage && buffer[i + 1] === carriage) {
|
|
// \r\r
|
|
return i + 2;
|
|
}
|
|
if (buffer[i] === carriage &&
|
|
buffer[i + 1] === newline &&
|
|
i + 3 < buffer.length &&
|
|
buffer[i + 2] === carriage &&
|
|
buffer[i + 3] === newline) {
|
|
// \r\n\r\n
|
|
return i + 4;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
//# sourceMappingURL=line.mjs.map
|