@claude-flow/plugin-gastown-bridge 0.1.2 → 0.1.4

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 (60) hide show
  1. package/dist/bd-bridge-C9wTbkhi.d.cts +318 -0
  2. package/dist/bd-bridge-C9wTbkhi.d.ts +318 -0
  3. package/dist/bridges.cjs +1 -1
  4. package/dist/bridges.d.cts +5 -604
  5. package/dist/bridges.d.ts +5 -604
  6. package/dist/bridges.js +1 -1
  7. package/dist/chunk-2KNTWGUX.js +12 -0
  8. package/dist/chunk-2KNTWGUX.js.map +1 -0
  9. package/dist/chunk-46PJFOMY.cjs +11 -0
  10. package/dist/chunk-46PJFOMY.cjs.map +1 -0
  11. package/dist/chunk-7UPWLRZX.js +11 -0
  12. package/dist/chunk-7UPWLRZX.js.map +1 -0
  13. package/dist/chunk-7VD5N6NG.cjs +11 -0
  14. package/dist/chunk-7VD5N6NG.cjs.map +1 -0
  15. package/dist/chunk-EBOVUTYL.js +12 -0
  16. package/dist/chunk-EBOVUTYL.js.map +1 -0
  17. package/dist/chunk-I2TLUPMJ.cjs +12 -0
  18. package/dist/chunk-I2TLUPMJ.cjs.map +1 -0
  19. package/dist/chunk-Q7MLH722.cjs +11 -0
  20. package/dist/chunk-Q7MLH722.cjs.map +1 -0
  21. package/dist/chunk-QFMFM7NE.cjs +13 -0
  22. package/dist/chunk-QFMFM7NE.cjs.map +1 -0
  23. package/dist/chunk-SUKPSMVK.cjs +12 -0
  24. package/dist/chunk-SUKPSMVK.cjs.map +1 -0
  25. package/dist/chunk-TGFYZY3C.js +11 -0
  26. package/dist/chunk-TGFYZY3C.js.map +1 -0
  27. package/dist/chunk-U74VYTRV.js +11 -0
  28. package/dist/chunk-U74VYTRV.js.map +1 -0
  29. package/dist/chunk-UJ56JMNG.js +13 -0
  30. package/dist/chunk-UJ56JMNG.js.map +1 -0
  31. package/dist/convoy.cjs +2 -0
  32. package/dist/convoy.cjs.map +1 -0
  33. package/dist/convoy.d.cts +6 -0
  34. package/dist/convoy.d.ts +6 -0
  35. package/dist/convoy.js +2 -0
  36. package/dist/convoy.js.map +1 -0
  37. package/dist/formula.cjs +2 -0
  38. package/dist/formula.cjs.map +1 -0
  39. package/dist/formula.d.cts +317 -0
  40. package/dist/formula.d.ts +317 -0
  41. package/dist/formula.js +2 -0
  42. package/dist/formula.js.map +1 -0
  43. package/dist/gt-bridge-B7hZz5vC.d.cts +291 -0
  44. package/dist/gt-bridge-B7hZz5vC.d.ts +291 -0
  45. package/dist/index-BzkAx4ho.d.ts +785 -0
  46. package/dist/index-CGJs8eMa.d.cts +785 -0
  47. package/dist/index.cjs +8 -9
  48. package/dist/index.cjs.map +1 -1
  49. package/dist/index.d.cts +13 -2237
  50. package/dist/index.d.ts +13 -2237
  51. package/dist/index.js +8 -9
  52. package/dist/index.js.map +1 -1
  53. package/dist/types-CMoOZXrm.d.cts +1146 -0
  54. package/dist/types-CMoOZXrm.d.ts +1146 -0
  55. package/dist/wasm-loader.js +1 -1
  56. package/package.json +16 -20
  57. package/dist/chunk-2QQ3FUZF.cjs +0 -14
  58. package/dist/chunk-2QQ3FUZF.cjs.map +0 -1
  59. package/dist/chunk-GKNIKJVQ.js +0 -14
  60. package/dist/chunk-GKNIKJVQ.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts","../src/memory/pool.ts","../src/memory/arena.ts","../src/memory/monitor.ts","../src/memory/lazy.ts","../src/memory/index.ts"],"names":["GasTownErrorCode","GasTownError","_GasTownError","message","code","context","cause","str","BeadsError","_BeadsError","beadId","reason","rawOutput","truncated","ValidationError","_ValidationError","constraints","sanitized","name","convoyId","field","detected","errors","allConstraints","e","CLIExecutionError","_CLIExecutionError","details","sanitizedArgs","arg","truncatedStderr","command","args","timeoutMs","exitCode","stderr","durationMs","FormulaError","_FormulaError","formulaName","ConvoyError","_ConvoyError","isGasTownError","error","isValidationError","isCLIExecutionError","isBeadsError","wrapError","getErrorMessage","ObjectPool","factory","options","obj","objects","count","toCreate","i","total","PooledBead","source","PooledStep","PooledFormula","PooledConvoy","PooledMolecule","key","beadPool","formulaPool","stepPool","convoyPool","moleculePool","allPools","getAllPoolStats","getTotalMemorySaved","pool","clearAllPools","preWarmAllPools","getPoolEfficiencySummary","stats","poolEntries","totalHits","sum","s","totalMisses","totalMemory","totalInUse","totalAvailable","Arena","config","sizeBytes","type","results","allocation","memoryFreed","scopedArena","arena","withArena","fn","withArenaSync","ArenaManager","saved","arenaStats","arenaManager","MemoryMonitor","EventEmitter","memUsage","poolSummary","arenaMemory","bytes","callback","index","usage","level","beforeStats","afterStats","oldest","newest","timeDiff","trend","getMemoryUsage","setMemoryLimit","onPressure","monitor","defaultMonitor","onMemoryPressure","getDefaultMonitor","disposeDefaultMonitor","MemoryBudgetManager","totalLimit","limit","used","budget","b","memoryBudget","Lazy","startTime","value","lazySingletons","getLazySingleton","lazy","disposeLazySingleton","disposeAllLazySingletons","promises","LazyModule","importer","LazyBridge","bridge","LazyWasm","loader","module","LazyObserver","createLazyProperty","state","initializeMemorySystem","getSystemMemoryStats","getMemoryReport","triggerMemoryCleanup","shutdownMemorySystem","isMemorySystemInitialized","getMemoryMonitor","acquireBead","releaseBead","bead","acquireStep","releaseStep","step","acquireFormula","releaseFormula","formula","acquireConvoy","releaseConvoy","convoy","acquireMolecule","releaseMolecule","molecule"],"mappings":"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","file":"chunk-7VD5N6NG.cjs","sourcesContent":["/**\n * Gas Town Bridge Plugin - Typed Error Classes\n *\n * Provides a hierarchy of typed error classes for the Gas Town Bridge Plugin:\n * - GasTownError: Base error class for all Gas Town errors\n * - BeadsError: Errors related to bead operations\n * - ValidationError: Input validation failures\n * - CLIExecutionError: CLI command execution failures\n *\n * All errors include:\n * - Typed error codes for programmatic handling\n * - Stack traces for debugging\n * - Contextual information about the failure\n *\n * @module gastown-bridge/errors\n * @version 0.1.0\n */\n\n// ============================================================================\n// Error Codes\n// ============================================================================\n\n/**\n * Gas Town error codes enumeration\n */\nexport const GasTownErrorCode = {\n // General errors\n UNKNOWN: 'GT_UNKNOWN',\n INITIALIZATION_FAILED: 'GT_INITIALIZATION_FAILED',\n NOT_INITIALIZED: 'GT_NOT_INITIALIZED',\n CONFIGURATION_ERROR: 'GT_CONFIGURATION_ERROR',\n\n // Validation errors\n VALIDATION_FAILED: 'GT_VALIDATION_FAILED',\n INVALID_INPUT: 'GT_INVALID_INPUT',\n INVALID_BEAD_ID: 'GT_INVALID_BEAD_ID',\n INVALID_FORMULA_NAME: 'GT_INVALID_FORMULA_NAME',\n INVALID_CONVOY_ID: 'GT_INVALID_CONVOY_ID',\n INVALID_ARGUMENTS: 'GT_INVALID_ARGUMENTS',\n COMMAND_INJECTION_DETECTED: 'GT_COMMAND_INJECTION_DETECTED',\n PATH_TRAVERSAL_DETECTED: 'GT_PATH_TRAVERSAL_DETECTED',\n\n // Beads errors\n BEAD_NOT_FOUND: 'GT_BEAD_NOT_FOUND',\n BEAD_CREATE_FAILED: 'GT_BEAD_CREATE_FAILED',\n BEAD_UPDATE_FAILED: 'GT_BEAD_UPDATE_FAILED',\n BEAD_DELETE_FAILED: 'GT_BEAD_DELETE_FAILED',\n BEAD_PARSE_FAILED: 'GT_BEAD_PARSE_FAILED',\n\n // Formula errors\n FORMULA_NOT_FOUND: 'GT_FORMULA_NOT_FOUND',\n FORMULA_PARSE_FAILED: 'GT_FORMULA_PARSE_FAILED',\n FORMULA_COOK_FAILED: 'GT_FORMULA_COOK_FAILED',\n FORMULA_INVALID_TYPE: 'GT_FORMULA_INVALID_TYPE',\n\n // Convoy errors\n CONVOY_NOT_FOUND: 'GT_CONVOY_NOT_FOUND',\n CONVOY_CREATE_FAILED: 'GT_CONVOY_CREATE_FAILED',\n\n // CLI errors\n CLI_NOT_FOUND: 'GT_CLI_NOT_FOUND',\n CLI_TIMEOUT: 'GT_CLI_TIMEOUT',\n CLI_EXECUTION_FAILED: 'GT_CLI_EXECUTION_FAILED',\n CLI_INVALID_OUTPUT: 'GT_CLI_INVALID_OUTPUT',\n\n // WASM errors\n WASM_NOT_AVAILABLE: 'GT_WASM_NOT_AVAILABLE',\n WASM_EXECUTION_FAILED: 'GT_WASM_EXECUTION_FAILED',\n\n // Sync errors\n SYNC_FAILED: 'GT_SYNC_FAILED',\n SYNC_CONFLICT: 'GT_SYNC_CONFLICT',\n\n // Graph errors\n DEPENDENCY_CYCLE: 'GT_DEPENDENCY_CYCLE',\n GRAPH_ERROR: 'GT_GRAPH_ERROR',\n} as const;\n\nexport type GasTownErrorCodeType = (typeof GasTownErrorCode)[keyof typeof GasTownErrorCode];\n\n// ============================================================================\n// Base Error Class\n// ============================================================================\n\n/**\n * Base error class for all Gas Town Bridge errors\n *\n * @example\n * ```typescript\n * throw new GasTownError(\n * 'Failed to initialize plugin',\n * GasTownErrorCode.INITIALIZATION_FAILED,\n * { configPath: '/path/to/config' }\n * );\n * ```\n */\nexport class GasTownError extends Error {\n /** Error code for programmatic handling */\n readonly code: GasTownErrorCodeType;\n\n /** Timestamp when error occurred */\n readonly timestamp: Date;\n\n /** Additional context about the error */\n readonly context?: Record<string, unknown>;\n\n /** Original error if this wraps another error */\n readonly cause?: Error;\n\n constructor(\n message: string,\n code: GasTownErrorCodeType = GasTownErrorCode.UNKNOWN,\n context?: Record<string, unknown>,\n cause?: Error\n ) {\n super(message);\n this.name = 'GasTownError';\n this.code = code;\n this.timestamp = new Date();\n this.context = context;\n this.cause = cause;\n\n // Maintain proper stack trace in V8 environments\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GasTownError);\n }\n }\n\n /**\n * Convert error to JSON for logging/serialization\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n message: this.message,\n code: this.code,\n timestamp: this.timestamp.toISOString(),\n context: this.context,\n cause: this.cause?.message,\n stack: this.stack,\n };\n }\n\n /**\n * Create a human-readable string representation\n */\n toString(): string {\n let str = `[${this.code}] ${this.message}`;\n if (this.context) {\n str += ` | Context: ${JSON.stringify(this.context)}`;\n }\n if (this.cause) {\n str += ` | Caused by: ${this.cause.message}`;\n }\n return str;\n }\n}\n\n// ============================================================================\n// Beads Error Class\n// ============================================================================\n\n/**\n * Error class for bead-related operations\n *\n * @example\n * ```typescript\n * throw new BeadsError(\n * 'Bead not found',\n * GasTownErrorCode.BEAD_NOT_FOUND,\n * { beadId: 'gt-abc12' }\n * );\n * ```\n */\nexport class BeadsError extends GasTownError {\n /** Bead ID if applicable */\n readonly beadId?: string;\n\n /** Operation being performed */\n readonly operation?: string;\n\n constructor(\n message: string,\n code: GasTownErrorCodeType = GasTownErrorCode.BEAD_NOT_FOUND,\n context?: Record<string, unknown>,\n cause?: Error\n ) {\n super(message, code, context, cause);\n this.name = 'BeadsError';\n\n // Extract beadId from context if present\n if (context?.beadId && typeof context.beadId === 'string') {\n this.beadId = context.beadId;\n }\n if (context?.operation && typeof context.operation === 'string') {\n this.operation = context.operation;\n }\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BeadsError);\n }\n }\n\n /**\n * Create a BeadsError for a not found scenario\n */\n static notFound(beadId: string): BeadsError {\n return new BeadsError(\n `Bead not found: ${beadId}`,\n GasTownErrorCode.BEAD_NOT_FOUND,\n { beadId, operation: 'get' }\n );\n }\n\n /**\n * Create a BeadsError for a create failure\n */\n static createFailed(reason: string, cause?: Error): BeadsError {\n return new BeadsError(\n `Failed to create bead: ${reason}`,\n GasTownErrorCode.BEAD_CREATE_FAILED,\n { operation: 'create' },\n cause\n );\n }\n\n /**\n * Create a BeadsError for a parse failure\n */\n static parseFailed(rawOutput: string, cause?: Error): BeadsError {\n // Truncate raw output for safety\n const truncated = rawOutput.length > 200 ? rawOutput.slice(0, 200) + '...' : rawOutput;\n return new BeadsError(\n 'Failed to parse bead output',\n GasTownErrorCode.BEAD_PARSE_FAILED,\n { operation: 'parse', outputLength: rawOutput.length, outputPreview: truncated },\n cause\n );\n }\n}\n\n// ============================================================================\n// Validation Error Class\n// ============================================================================\n\n/**\n * Validation constraint that was violated\n */\nexport interface ValidationConstraint {\n /** Field or parameter that failed validation */\n field: string;\n /** Expected constraint (e.g., \"alphanumeric\", \"max-length:64\") */\n constraint: string;\n /** Actual value (sanitized for logging) */\n actual?: string;\n /** Expected value or pattern */\n expected?: string;\n}\n\n/**\n * Error class for input validation failures\n *\n * @example\n * ```typescript\n * throw new ValidationError(\n * 'Invalid bead ID format',\n * GasTownErrorCode.INVALID_BEAD_ID,\n * [{ field: 'beadId', constraint: 'alphanumeric', actual: 'abc;rm -rf' }]\n * );\n * ```\n */\nexport class ValidationError extends GasTownError {\n /** Validation constraints that were violated */\n readonly constraints: ValidationConstraint[];\n\n constructor(\n message: string,\n code: GasTownErrorCodeType = GasTownErrorCode.VALIDATION_FAILED,\n constraints: ValidationConstraint[] = [],\n cause?: Error\n ) {\n super(message, code, { constraints }, cause);\n this.name = 'ValidationError';\n this.constraints = constraints;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ValidationError);\n }\n }\n\n /**\n * Create a ValidationError for an invalid bead ID\n */\n static invalidBeadId(beadId: string): ValidationError {\n // Sanitize the bead ID for safe logging\n const sanitized = beadId.replace(/[^\\w\\s-]/g, '?').slice(0, 32);\n return new ValidationError(\n 'Invalid bead ID format',\n GasTownErrorCode.INVALID_BEAD_ID,\n [{\n field: 'beadId',\n constraint: 'alphanumeric with gt- prefix',\n actual: sanitized,\n expected: 'gt-{4-16 alphanumeric} or numeric',\n }]\n );\n }\n\n /**\n * Create a ValidationError for an invalid formula name\n */\n static invalidFormulaName(name: string): ValidationError {\n const sanitized = name.replace(/[^\\w\\s-]/g, '?').slice(0, 32);\n return new ValidationError(\n 'Invalid formula name format',\n GasTownErrorCode.INVALID_FORMULA_NAME,\n [{\n field: 'formulaName',\n constraint: 'alphanumeric with dash/underscore, starting with letter',\n actual: sanitized,\n expected: '[a-zA-Z][a-zA-Z0-9_-]{0,63}',\n }]\n );\n }\n\n /**\n * Create a ValidationError for an invalid convoy ID\n */\n static invalidConvoyId(convoyId: string): ValidationError {\n const sanitized = convoyId.replace(/[^\\w\\s-]/g, '?').slice(0, 32);\n return new ValidationError(\n 'Invalid convoy ID format',\n GasTownErrorCode.INVALID_CONVOY_ID,\n [{\n field: 'convoyId',\n constraint: 'UUID format',\n actual: sanitized,\n expected: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n }]\n );\n }\n\n /**\n * Create a ValidationError for command injection attempt\n */\n static commandInjection(field: string, detected: string): ValidationError {\n // Never include the actual malicious content\n return new ValidationError(\n `Command injection detected in ${field}`,\n GasTownErrorCode.COMMAND_INJECTION_DETECTED,\n [{\n field,\n constraint: 'no shell metacharacters',\n actual: '[REDACTED]',\n expected: 'safe characters only',\n }]\n );\n }\n\n /**\n * Create a ValidationError for path traversal attempt\n */\n static pathTraversal(field: string): ValidationError {\n return new ValidationError(\n `Path traversal detected in ${field}`,\n GasTownErrorCode.PATH_TRAVERSAL_DETECTED,\n [{\n field,\n constraint: 'no parent directory references',\n actual: '[REDACTED]',\n expected: 'safe path characters only',\n }]\n );\n }\n\n /**\n * Combine multiple validation errors\n */\n static combine(errors: ValidationError[]): ValidationError {\n const allConstraints = errors.flatMap(e => e.constraints);\n return new ValidationError(\n `Multiple validation errors: ${errors.map(e => e.message).join('; ')}`,\n GasTownErrorCode.VALIDATION_FAILED,\n allConstraints\n );\n }\n}\n\n// ============================================================================\n// CLI Execution Error Class\n// ============================================================================\n\n/**\n * Error class for CLI command execution failures\n *\n * @example\n * ```typescript\n * throw new CLIExecutionError(\n * 'gt command failed',\n * GasTownErrorCode.CLI_EXECUTION_FAILED,\n * { command: 'gt', args: ['beads', 'list'], exitCode: 1, stderr: 'error message' }\n * );\n * ```\n */\nexport class CLIExecutionError extends GasTownError {\n /** CLI command that was executed */\n readonly command: string;\n\n /** Arguments passed to the command (sanitized) */\n readonly args: string[];\n\n /** Exit code from the process */\n readonly exitCode?: number;\n\n /** Standard error output (truncated) */\n readonly stderr?: string;\n\n /** Execution duration in milliseconds */\n readonly durationMs?: number;\n\n constructor(\n message: string,\n code: GasTownErrorCodeType = GasTownErrorCode.CLI_EXECUTION_FAILED,\n details: {\n command: string;\n args?: string[];\n exitCode?: number;\n stderr?: string;\n durationMs?: number;\n },\n cause?: Error\n ) {\n // Sanitize args for context\n const sanitizedArgs = (details.args ?? []).map(arg =>\n arg.length > 50 ? arg.slice(0, 50) + '...' : arg\n );\n\n // Truncate stderr for safety\n const truncatedStderr = details.stderr && details.stderr.length > 500\n ? details.stderr.slice(0, 500) + '...'\n : details.stderr;\n\n super(message, code, {\n command: details.command,\n args: sanitizedArgs,\n exitCode: details.exitCode,\n durationMs: details.durationMs,\n }, cause);\n\n this.name = 'CLIExecutionError';\n this.command = details.command;\n this.args = sanitizedArgs;\n this.exitCode = details.exitCode;\n this.stderr = truncatedStderr;\n this.durationMs = details.durationMs;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CLIExecutionError);\n }\n }\n\n /**\n * Create a CLIExecutionError for command not found\n */\n static notFound(command: string): CLIExecutionError {\n return new CLIExecutionError(\n `CLI command not found: ${command}`,\n GasTownErrorCode.CLI_NOT_FOUND,\n { command }\n );\n }\n\n /**\n * Create a CLIExecutionError for timeout\n */\n static timeout(command: string, args: string[], timeoutMs: number): CLIExecutionError {\n return new CLIExecutionError(\n `CLI command timed out after ${timeoutMs}ms`,\n GasTownErrorCode.CLI_TIMEOUT,\n { command, args, durationMs: timeoutMs }\n );\n }\n\n /**\n * Create a CLIExecutionError for execution failure\n */\n static failed(\n command: string,\n args: string[],\n exitCode: number,\n stderr: string,\n durationMs?: number\n ): CLIExecutionError {\n return new CLIExecutionError(\n `CLI command failed with exit code ${exitCode}`,\n GasTownErrorCode.CLI_EXECUTION_FAILED,\n { command, args, exitCode, stderr, durationMs }\n );\n }\n\n /**\n * Create a CLIExecutionError for invalid output\n */\n static invalidOutput(command: string, reason: string): CLIExecutionError {\n return new CLIExecutionError(\n `CLI command produced invalid output: ${reason}`,\n GasTownErrorCode.CLI_INVALID_OUTPUT,\n { command }\n );\n }\n}\n\n// ============================================================================\n// Formula Error Class\n// ============================================================================\n\n/**\n * Error class for formula-related operations\n */\nexport class FormulaError extends GasTownError {\n /** Formula name if applicable */\n readonly formulaName?: string;\n\n /** Formula type if applicable */\n readonly formulaType?: string;\n\n constructor(\n message: string,\n code: GasTownErrorCodeType = GasTownErrorCode.FORMULA_PARSE_FAILED,\n context?: Record<string, unknown>,\n cause?: Error\n ) {\n super(message, code, context, cause);\n this.name = 'FormulaError';\n\n if (context?.formulaName && typeof context.formulaName === 'string') {\n this.formulaName = context.formulaName;\n }\n if (context?.formulaType && typeof context.formulaType === 'string') {\n this.formulaType = context.formulaType;\n }\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FormulaError);\n }\n }\n\n /**\n * Create a FormulaError for not found\n */\n static notFound(formulaName: string): FormulaError {\n return new FormulaError(\n `Formula not found: ${formulaName}`,\n GasTownErrorCode.FORMULA_NOT_FOUND,\n { formulaName }\n );\n }\n\n /**\n * Create a FormulaError for parse failure\n */\n static parseFailed(formulaName: string, reason: string, cause?: Error): FormulaError {\n return new FormulaError(\n `Failed to parse formula ${formulaName}: ${reason}`,\n GasTownErrorCode.FORMULA_PARSE_FAILED,\n { formulaName, parseError: reason },\n cause\n );\n }\n\n /**\n * Create a FormulaError for cook failure\n */\n static cookFailed(formulaName: string, reason: string, cause?: Error): FormulaError {\n return new FormulaError(\n `Failed to cook formula ${formulaName}: ${reason}`,\n GasTownErrorCode.FORMULA_COOK_FAILED,\n { formulaName, cookError: reason },\n cause\n );\n }\n}\n\n// ============================================================================\n// Convoy Error Class\n// ============================================================================\n\n/**\n * Error class for convoy-related operations\n */\nexport class ConvoyError extends GasTownError {\n /** Convoy ID if applicable */\n readonly convoyId?: string;\n\n constructor(\n message: string,\n code: GasTownErrorCodeType = GasTownErrorCode.CONVOY_NOT_FOUND,\n context?: Record<string, unknown>,\n cause?: Error\n ) {\n super(message, code, context, cause);\n this.name = 'ConvoyError';\n\n if (context?.convoyId && typeof context.convoyId === 'string') {\n this.convoyId = context.convoyId;\n }\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ConvoyError);\n }\n }\n\n /**\n * Create a ConvoyError for not found\n */\n static notFound(convoyId: string): ConvoyError {\n return new ConvoyError(\n `Convoy not found: ${convoyId}`,\n GasTownErrorCode.CONVOY_NOT_FOUND,\n { convoyId }\n );\n }\n\n /**\n * Create a ConvoyError for create failure\n */\n static createFailed(reason: string, cause?: Error): ConvoyError {\n return new ConvoyError(\n `Failed to create convoy: ${reason}`,\n GasTownErrorCode.CONVOY_CREATE_FAILED,\n { operation: 'create' },\n cause\n );\n }\n}\n\n// ============================================================================\n// Error Utilities\n// ============================================================================\n\n/**\n * Type guard for GasTownError\n */\nexport function isGasTownError(error: unknown): error is GasTownError {\n return error instanceof GasTownError;\n}\n\n/**\n * Type guard for ValidationError\n */\nexport function isValidationError(error: unknown): error is ValidationError {\n return error instanceof ValidationError;\n}\n\n/**\n * Type guard for CLIExecutionError\n */\nexport function isCLIExecutionError(error: unknown): error is CLIExecutionError {\n return error instanceof CLIExecutionError;\n}\n\n/**\n * Type guard for BeadsError\n */\nexport function isBeadsError(error: unknown): error is BeadsError {\n return error instanceof BeadsError;\n}\n\n/**\n * Wrap an unknown error as a GasTownError\n */\nexport function wrapError(error: unknown, code?: GasTownErrorCodeType): GasTownError {\n if (error instanceof GasTownError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new GasTownError(\n error.message,\n code ?? GasTownErrorCode.UNKNOWN,\n undefined,\n error\n );\n }\n\n return new GasTownError(\n String(error),\n code ?? GasTownErrorCode.UNKNOWN\n );\n}\n\n/**\n * Extract error message safely\n */\nexport function getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n return String(error);\n}\n","/**\n * Object Pooling for Gas Town Bridge Plugin\n *\n * Provides high-performance object pooling to minimize GC pressure\n * and reduce memory allocations for frequently created objects.\n *\n * Target: 75% memory reduction, <10MB heap for 10k beads\n *\n * Pooled object types:\n * - Bead: Git-backed issue tracking objects\n * - Formula: TOML-defined workflow definitions\n * - Step: Individual workflow steps\n * - Convoy: Work-order tracking containers\n * - Molecule: Generated work units\n *\n * @module gastown-bridge/memory/pool\n */\n\nimport type {\n Bead,\n Formula,\n Step,\n Convoy,\n CookedFormula,\n FormulaType,\n BeadStatus,\n ConvoyStatus,\n} from '../types.js';\n\nimport type { Molecule } from '../formula/executor.js';\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Poolable object interface - objects that can be reset and reused\n */\nexport interface Poolable {\n /** Reset object to initial state for reuse */\n reset?(): void;\n}\n\n/**\n * Pool statistics for monitoring\n */\nexport interface PoolStats {\n /** Total objects created (including pooled) */\n created: number;\n /** Objects currently in pool (available) */\n available: number;\n /** Objects currently in use */\n inUse: number;\n /** Number of times pool was empty on acquire */\n misses: number;\n /** Number of successful pool acquisitions */\n hits: number;\n /** Peak pool size reached */\n peakSize: number;\n /** Memory saved (estimated bytes) */\n memorySaved: number;\n}\n\n/**\n * Pool configuration\n */\nexport interface PoolConfig {\n /** Initial pool size */\n initialSize?: number;\n /** Maximum pool size (0 = unlimited) */\n maxSize?: number;\n /** Estimated object size in bytes (for memory tracking) */\n objectSizeBytes?: number;\n /** Whether to pre-warm the pool */\n preWarm?: boolean;\n}\n\n// ============================================================================\n// Generic Object Pool Implementation\n// ============================================================================\n\n/**\n * High-performance generic object pool\n *\n * Uses a simple array-based free list for O(1) acquire/release.\n * Supports both factory functions and prototype-based object creation.\n *\n * @example\n * ```typescript\n * const beadPool = new ObjectPool<PooledBead>({\n * factory: () => new PooledBead(),\n * reset: (bead) => bead.reset(),\n * initialSize: 100,\n * maxSize: 10000,\n * });\n *\n * const bead = beadPool.acquire();\n * // ... use bead ...\n * beadPool.release(bead);\n * ```\n */\nexport class ObjectPool<T extends object> {\n private pool: T[] = [];\n private factory: () => T;\n private resetFn?: (obj: T) => void;\n private config: Required<PoolConfig>;\n private stats: PoolStats = {\n created: 0,\n available: 0,\n inUse: 0,\n misses: 0,\n hits: 0,\n peakSize: 0,\n memorySaved: 0,\n };\n\n constructor(\n factory: () => T,\n options?: PoolConfig & { reset?: (obj: T) => void }\n ) {\n this.factory = factory;\n this.resetFn = options?.reset;\n this.config = {\n initialSize: options?.initialSize ?? 0,\n maxSize: options?.maxSize ?? 0,\n objectSizeBytes: options?.objectSizeBytes ?? 256,\n preWarm: options?.preWarm ?? false,\n };\n\n if (this.config.preWarm && this.config.initialSize > 0) {\n this.preWarm(this.config.initialSize);\n }\n }\n\n /**\n * Acquire an object from the pool\n *\n * Returns a pooled object if available, otherwise creates a new one.\n * O(1) operation using array pop.\n */\n acquire(): T {\n let obj: T;\n\n if (this.pool.length > 0) {\n obj = this.pool.pop()!;\n this.stats.hits++;\n this.stats.available--;\n } else {\n obj = this.factory();\n this.stats.created++;\n this.stats.misses++;\n }\n\n this.stats.inUse++;\n if (this.stats.inUse > this.stats.peakSize) {\n this.stats.peakSize = this.stats.inUse;\n }\n\n return obj;\n }\n\n /**\n * Release an object back to the pool\n *\n * Resets the object and returns it to the pool for reuse.\n * O(1) operation using array push.\n *\n * @param obj - Object to release\n */\n release(obj: T): void {\n // Reset the object\n if (this.resetFn) {\n this.resetFn(obj);\n } else if ('reset' in obj && typeof (obj as Poolable).reset === 'function') {\n (obj as Poolable).reset!();\n }\n\n // Check if pool is at max capacity\n if (this.config.maxSize > 0 && this.pool.length >= this.config.maxSize) {\n // Let GC handle it - pool is full\n this.stats.inUse--;\n return;\n }\n\n this.pool.push(obj);\n this.stats.available++;\n this.stats.inUse--;\n this.stats.memorySaved += this.config.objectSizeBytes;\n }\n\n /**\n * Release multiple objects at once (batch operation)\n */\n releaseAll(objects: T[]): void {\n for (const obj of objects) {\n this.release(obj);\n }\n }\n\n /**\n * Pre-warm the pool with objects\n */\n preWarm(count: number): void {\n const toCreate = Math.min(\n count,\n this.config.maxSize > 0 ? this.config.maxSize - this.pool.length : count\n );\n\n for (let i = 0; i < toCreate; i++) {\n const obj = this.factory();\n this.stats.created++;\n this.pool.push(obj);\n this.stats.available++;\n }\n }\n\n /**\n * Clear the pool and release all objects\n */\n clear(): void {\n this.pool.length = 0;\n this.stats.available = 0;\n }\n\n /**\n * Get pool statistics\n */\n getStats(): Readonly<PoolStats> {\n return { ...this.stats };\n }\n\n /**\n * Get current pool size\n */\n get size(): number {\n return this.pool.length;\n }\n\n /**\n * Get hit rate (percentage of successful pool acquisitions)\n */\n get hitRate(): number {\n const total = this.stats.hits + this.stats.misses;\n return total > 0 ? (this.stats.hits / total) * 100 : 0;\n }\n}\n\n// ============================================================================\n// Pooled Object Classes\n// ============================================================================\n\n/**\n * Pooled Bead object with reset capability\n */\nexport class PooledBead implements Bead, Poolable {\n id = '';\n title = '';\n description = '';\n status: BeadStatus = 'open';\n priority = 0;\n labels: string[] = [];\n createdAt: Date = new Date();\n updatedAt: Date = new Date();\n parentId?: string;\n assignee?: string;\n rig?: string;\n blockedBy?: string[];\n blocks?: string[];\n\n reset(): void {\n this.id = '';\n this.title = '';\n this.description = '';\n this.status = 'open';\n this.priority = 0;\n this.labels.length = 0;\n this.createdAt = new Date();\n this.updatedAt = new Date();\n this.parentId = undefined;\n this.assignee = undefined;\n this.rig = undefined;\n this.blockedBy = undefined;\n this.blocks = undefined;\n }\n\n /**\n * Initialize from a Bead-like object\n */\n initFrom(source: Partial<Bead>): this {\n this.id = source.id ?? '';\n this.title = source.title ?? '';\n this.description = source.description ?? '';\n this.status = source.status ?? 'open';\n this.priority = source.priority ?? 0;\n this.labels = source.labels ? [...source.labels] : [];\n this.createdAt = source.createdAt ?? new Date();\n this.updatedAt = source.updatedAt ?? new Date();\n this.parentId = source.parentId;\n this.assignee = source.assignee;\n this.rig = source.rig;\n this.blockedBy = source.blockedBy ? [...source.blockedBy] : undefined;\n this.blocks = source.blocks ? [...source.blocks] : undefined;\n return this;\n }\n}\n\n/**\n * Pooled Step object with reset capability\n */\nexport class PooledStep implements Step, Poolable {\n id = '';\n title = '';\n description = '';\n needs?: string[];\n duration?: number;\n requires?: string[];\n metadata?: Record<string, unknown>;\n\n reset(): void {\n this.id = '';\n this.title = '';\n this.description = '';\n this.needs = undefined;\n this.duration = undefined;\n this.requires = undefined;\n this.metadata = undefined;\n }\n\n initFrom(source: Partial<Step>): this {\n this.id = source.id ?? '';\n this.title = source.title ?? '';\n this.description = source.description ?? '';\n this.needs = source.needs ? [...source.needs] : undefined;\n this.duration = source.duration;\n this.requires = source.requires ? [...source.requires] : undefined;\n this.metadata = source.metadata ? { ...source.metadata } : undefined;\n return this;\n }\n}\n\n/**\n * Pooled Formula object with reset capability\n */\nexport class PooledFormula implements Formula, Poolable {\n name = '';\n description = '';\n type: FormulaType = 'workflow';\n version = 1;\n steps?: Step[];\n legs?: Formula['legs'];\n vars?: Formula['vars'];\n metadata?: Formula['metadata'];\n\n reset(): void {\n this.name = '';\n this.description = '';\n this.type = 'workflow';\n this.version = 1;\n this.steps = undefined;\n this.legs = undefined;\n this.vars = undefined;\n this.metadata = undefined;\n }\n\n initFrom(source: Partial<Formula>): this {\n this.name = source.name ?? '';\n this.description = source.description ?? '';\n this.type = source.type ?? 'workflow';\n this.version = source.version ?? 1;\n this.steps = source.steps ? [...source.steps] : undefined;\n this.legs = source.legs ? [...source.legs] : undefined;\n this.vars = source.vars ? { ...source.vars } : undefined;\n this.metadata = source.metadata ? { ...source.metadata } : undefined;\n return this;\n }\n}\n\n/**\n * Pooled Convoy object with reset capability\n */\nexport class PooledConvoy implements Convoy, Poolable {\n id = '';\n name = '';\n trackedIssues: string[] = [];\n status: ConvoyStatus = 'active';\n startedAt: Date = new Date();\n completedAt?: Date;\n progress = { total: 0, closed: 0, inProgress: 0, blocked: 0 };\n formula?: string;\n description?: string;\n\n reset(): void {\n this.id = '';\n this.name = '';\n this.trackedIssues.length = 0;\n this.status = 'active';\n this.startedAt = new Date();\n this.completedAt = undefined;\n this.progress = { total: 0, closed: 0, inProgress: 0, blocked: 0 };\n this.formula = undefined;\n this.description = undefined;\n }\n\n initFrom(source: Partial<Convoy>): this {\n this.id = source.id ?? '';\n this.name = source.name ?? '';\n this.trackedIssues = source.trackedIssues ? [...source.trackedIssues] : [];\n this.status = source.status ?? 'active';\n this.startedAt = source.startedAt ?? new Date();\n this.completedAt = source.completedAt;\n this.progress = source.progress ? { ...source.progress } : { total: 0, closed: 0, inProgress: 0, blocked: 0 };\n this.formula = source.formula;\n this.description = source.description;\n return this;\n }\n}\n\n/**\n * Pooled Molecule object with reset capability\n */\nexport class PooledMolecule implements Molecule, Poolable {\n id = '';\n formulaName = '';\n title = '';\n description = '';\n type: FormulaType = 'workflow';\n sourceId = '';\n agent?: string;\n dependencies: string[] = [];\n order = 0;\n metadata: Record<string, unknown> = {};\n createdAt: Date = new Date();\n\n reset(): void {\n this.id = '';\n this.formulaName = '';\n this.title = '';\n this.description = '';\n this.type = 'workflow';\n this.sourceId = '';\n this.agent = undefined;\n this.dependencies.length = 0;\n this.order = 0;\n // Clear metadata object by resetting to empty object\n for (const key of Object.keys(this.metadata)) {\n delete this.metadata[key];\n }\n this.createdAt = new Date();\n }\n\n initFrom(source: Partial<Molecule>): this {\n this.id = source.id ?? '';\n this.formulaName = source.formulaName ?? '';\n this.title = source.title ?? '';\n this.description = source.description ?? '';\n this.type = source.type ?? 'workflow';\n this.sourceId = source.sourceId ?? '';\n this.agent = source.agent;\n this.dependencies = source.dependencies ? [...source.dependencies] : [];\n this.order = source.order ?? 0;\n this.metadata = source.metadata ? { ...source.metadata } : {};\n this.createdAt = source.createdAt ?? new Date();\n return this;\n }\n}\n\n// ============================================================================\n// Pre-configured Pool Instances\n// ============================================================================\n\n/**\n * Global Bead pool - optimized for 10k beads target\n * Estimated size per bead: ~512 bytes\n */\nexport const beadPool = new ObjectPool<PooledBead>(\n () => new PooledBead(),\n {\n initialSize: 100,\n maxSize: 10000,\n objectSizeBytes: 512,\n preWarm: false, // Lazy initialization\n }\n);\n\n/**\n * Global Formula pool\n * Estimated size per formula: ~1KB\n */\nexport const formulaPool = new ObjectPool<PooledFormula>(\n () => new PooledFormula(),\n {\n initialSize: 10,\n maxSize: 500,\n objectSizeBytes: 1024,\n preWarm: false,\n }\n);\n\n/**\n * Global Step pool\n * Estimated size per step: ~256 bytes\n */\nexport const stepPool = new ObjectPool<PooledStep>(\n () => new PooledStep(),\n {\n initialSize: 50,\n maxSize: 5000,\n objectSizeBytes: 256,\n preWarm: false,\n }\n);\n\n/**\n * Global Convoy pool\n * Estimated size per convoy: ~768 bytes\n */\nexport const convoyPool = new ObjectPool<PooledConvoy>(\n () => new PooledConvoy(),\n {\n initialSize: 10,\n maxSize: 200,\n objectSizeBytes: 768,\n preWarm: false,\n }\n);\n\n/**\n * Global Molecule pool\n * Estimated size per molecule: ~384 bytes\n */\nexport const moleculePool = new ObjectPool<PooledMolecule>(\n () => new PooledMolecule(),\n {\n initialSize: 50,\n maxSize: 5000,\n objectSizeBytes: 384,\n preWarm: false,\n }\n);\n\n// ============================================================================\n// Pool Management\n// ============================================================================\n\n/**\n * All managed pools\n */\nconst allPools = {\n bead: beadPool,\n formula: formulaPool,\n step: stepPool,\n convoy: convoyPool,\n molecule: moleculePool,\n} as const;\n\nexport type PoolType = keyof typeof allPools;\n\n/**\n * Get statistics for all pools\n */\nexport function getAllPoolStats(): Record<PoolType, PoolStats> {\n return {\n bead: beadPool.getStats(),\n formula: formulaPool.getStats(),\n step: stepPool.getStats(),\n convoy: convoyPool.getStats(),\n molecule: moleculePool.getStats(),\n };\n}\n\n/**\n * Get total memory saved across all pools\n */\nexport function getTotalMemorySaved(): number {\n return Object.values(allPools).reduce(\n (total, pool) => total + pool.getStats().memorySaved,\n 0\n );\n}\n\n/**\n * Clear all pools\n */\nexport function clearAllPools(): void {\n for (const pool of Object.values(allPools)) {\n pool.clear();\n }\n}\n\n/**\n * Pre-warm all pools with default sizes\n */\nexport function preWarmAllPools(): void {\n beadPool.preWarm(100);\n formulaPool.preWarm(10);\n stepPool.preWarm(50);\n convoyPool.preWarm(10);\n moleculePool.preWarm(50);\n}\n\n/**\n * Get a summary of pool efficiency\n */\nexport function getPoolEfficiencySummary(): {\n totalHitRate: number;\n totalMemorySavedKB: number;\n totalObjectsInUse: number;\n totalObjectsAvailable: number;\n} {\n const stats = getAllPoolStats();\n const poolEntries = Object.values(stats);\n\n const totalHits = poolEntries.reduce((sum, s) => sum + s.hits, 0);\n const totalMisses = poolEntries.reduce((sum, s) => sum + s.misses, 0);\n const totalMemory = poolEntries.reduce((sum, s) => sum + s.memorySaved, 0);\n const totalInUse = poolEntries.reduce((sum, s) => sum + s.inUse, 0);\n const totalAvailable = poolEntries.reduce((sum, s) => sum + s.available, 0);\n\n return {\n totalHitRate: totalHits + totalMisses > 0\n ? (totalHits / (totalHits + totalMisses)) * 100\n : 0,\n totalMemorySavedKB: totalMemory / 1024,\n totalObjectsInUse: totalInUse,\n totalObjectsAvailable: totalAvailable,\n };\n}\n\nexport default ObjectPool;\n","/**\n * Arena Allocator for Gas Town Bridge Plugin\n *\n * Provides bulk memory allocation with single-operation deallocation.\n * Ideal for batch operations where many objects are created and then\n * discarded together (e.g., convoy graph operations, formula parsing).\n *\n * Benefits:\n * - O(1) reset/clear operation\n * - Reduced GC pressure for batch operations\n * - Better memory locality\n * - Predictable memory usage\n *\n * @module gastown-bridge/memory/arena\n */\n\nimport {\n ObjectPool,\n type PoolStats,\n PooledBead,\n PooledStep,\n PooledFormula,\n PooledConvoy,\n PooledMolecule,\n} from './pool.js';\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Arena statistics\n */\nexport interface ArenaStats {\n /** Total allocations since creation */\n totalAllocations: number;\n /** Current allocations (not yet reset) */\n currentAllocations: number;\n /** Number of reset operations */\n resetCount: number;\n /** Peak allocations before reset */\n peakAllocations: number;\n /** Estimated memory in use (bytes) */\n memoryUsed: number;\n /** Total memory saved via bulk reset (bytes) */\n memorySaved: number;\n}\n\n/**\n * Arena configuration\n */\nexport interface ArenaConfig {\n /** Name for debugging */\n name?: string;\n /** Initial capacity hint */\n initialCapacity?: number;\n /** Maximum allocations before forced reset */\n maxAllocations?: number;\n /** Enable automatic pool return on reset */\n returnToPool?: boolean;\n}\n\n/**\n * Tracked allocation with type info\n */\ninterface TrackedAllocation<T> {\n object: T;\n type: string;\n sizeBytes: number;\n}\n\n// ============================================================================\n// Arena Implementation\n// ============================================================================\n\n/**\n * Arena Allocator\n *\n * Manages bulk allocations that are reset together. Uses underlying\n * object pools when available for maximum efficiency.\n *\n * @example\n * ```typescript\n * const arena = new Arena('convoy-analysis');\n *\n * // Allocate objects for batch operation\n * const beads = arena.allocateMany('bead', 100);\n * const steps = arena.allocateMany('step', 50);\n *\n * // Process...\n *\n * // Single O(1) reset clears everything\n * arena.reset();\n * ```\n */\nexport class Arena {\n private name: string;\n private config: Required<ArenaConfig>;\n private allocations: TrackedAllocation<unknown>[] = [];\n private stats: ArenaStats = {\n totalAllocations: 0,\n currentAllocations: 0,\n resetCount: 0,\n peakAllocations: 0,\n memoryUsed: 0,\n memorySaved: 0,\n };\n\n // Type-specific pools for arena allocations\n private beadPool: ObjectPool<PooledBead>;\n private stepPool: ObjectPool<PooledStep>;\n private formulaPool: ObjectPool<PooledFormula>;\n private convoyPool: ObjectPool<PooledConvoy>;\n private moleculePool: ObjectPool<PooledMolecule>;\n\n constructor(name?: string, config?: ArenaConfig) {\n this.name = name ?? config?.name ?? 'arena';\n this.config = {\n name: this.name,\n initialCapacity: config?.initialCapacity ?? 100,\n maxAllocations: config?.maxAllocations ?? 0,\n returnToPool: config?.returnToPool ?? true,\n };\n\n // Create arena-specific pools (separate from global pools)\n this.beadPool = new ObjectPool(() => new PooledBead(), {\n initialSize: 0,\n maxSize: 10000,\n objectSizeBytes: 512,\n });\n\n this.stepPool = new ObjectPool(() => new PooledStep(), {\n initialSize: 0,\n maxSize: 5000,\n objectSizeBytes: 256,\n });\n\n this.formulaPool = new ObjectPool(() => new PooledFormula(), {\n initialSize: 0,\n maxSize: 500,\n objectSizeBytes: 1024,\n });\n\n this.convoyPool = new ObjectPool(() => new PooledConvoy(), {\n initialSize: 0,\n maxSize: 200,\n objectSizeBytes: 768,\n });\n\n this.moleculePool = new ObjectPool(() => new PooledMolecule(), {\n initialSize: 0,\n maxSize: 5000,\n objectSizeBytes: 384,\n });\n\n // Pre-allocate array capacity\n if (this.config.initialCapacity > 0) {\n this.allocations = new Array(this.config.initialCapacity);\n this.allocations.length = 0;\n }\n }\n\n /**\n * Allocate an object from the arena\n *\n * Uses pooled objects when available for the given type.\n */\n allocate<T>(factory: () => T, sizeBytes = 256): T {\n this.checkMaxAllocations();\n\n const obj = factory();\n this.trackAllocation(obj, 'generic', sizeBytes);\n return obj;\n }\n\n /**\n * Allocate a typed object from the arena pools\n */\n allocateTyped<K extends AllocatableType>(type: K): TypeMap[K] {\n this.checkMaxAllocations();\n\n let obj: TypeMap[K];\n let sizeBytes: number;\n\n switch (type) {\n case 'bead':\n obj = this.beadPool.acquire() as TypeMap[K];\n sizeBytes = 512;\n break;\n case 'step':\n obj = this.stepPool.acquire() as TypeMap[K];\n sizeBytes = 256;\n break;\n case 'formula':\n obj = this.formulaPool.acquire() as TypeMap[K];\n sizeBytes = 1024;\n break;\n case 'convoy':\n obj = this.convoyPool.acquire() as TypeMap[K];\n sizeBytes = 768;\n break;\n case 'molecule':\n obj = this.moleculePool.acquire() as TypeMap[K];\n sizeBytes = 384;\n break;\n default:\n throw new Error(`Unknown allocatable type: ${type}`);\n }\n\n this.trackAllocation(obj, type, sizeBytes);\n return obj;\n }\n\n /**\n * Allocate multiple typed objects\n */\n allocateMany<K extends AllocatableType>(type: K, count: number): TypeMap[K][] {\n const results: TypeMap[K][] = new Array(count);\n for (let i = 0; i < count; i++) {\n results[i] = this.allocateTyped(type);\n }\n return results;\n }\n\n /**\n * Reset the arena, returning all objects to their pools\n *\n * This is an O(n) operation where n is the number of allocations,\n * but it's a single operation instead of n individual deallocations.\n */\n reset(): void {\n if (this.config.returnToPool) {\n // Return objects to their respective pools\n for (const allocation of this.allocations) {\n this.returnToPool(allocation);\n }\n }\n\n // Track stats before reset\n const memoryFreed = this.stats.memoryUsed;\n this.stats.memorySaved += memoryFreed;\n this.stats.resetCount++;\n\n if (this.stats.currentAllocations > this.stats.peakAllocations) {\n this.stats.peakAllocations = this.stats.currentAllocations;\n }\n\n // Clear allocations array (reuse the array itself)\n this.allocations.length = 0;\n this.stats.currentAllocations = 0;\n this.stats.memoryUsed = 0;\n }\n\n /**\n * Get arena statistics\n */\n getStats(): Readonly<ArenaStats> {\n return { ...this.stats };\n }\n\n /**\n * Get current allocation count\n */\n get allocationCount(): number {\n return this.stats.currentAllocations;\n }\n\n /**\n * Get arena name\n */\n get arenaName(): string {\n return this.name;\n }\n\n /**\n * Dispose the arena and all its resources\n */\n dispose(): void {\n this.reset();\n this.beadPool.clear();\n this.stepPool.clear();\n this.formulaPool.clear();\n this.convoyPool.clear();\n this.moleculePool.clear();\n }\n\n // =========================================================================\n // Private Methods\n // =========================================================================\n\n private trackAllocation<T>(obj: T, type: string, sizeBytes: number): void {\n this.allocations.push({ object: obj, type, sizeBytes });\n this.stats.totalAllocations++;\n this.stats.currentAllocations++;\n this.stats.memoryUsed += sizeBytes;\n }\n\n private checkMaxAllocations(): void {\n if (\n this.config.maxAllocations > 0 &&\n this.stats.currentAllocations >= this.config.maxAllocations\n ) {\n // Auto-reset when limit reached\n console.warn(`[${this.name}] Max allocations reached, auto-resetting`);\n this.reset();\n }\n }\n\n private returnToPool(allocation: TrackedAllocation<unknown>): void {\n switch (allocation.type) {\n case 'bead':\n this.beadPool.release(allocation.object as PooledBead);\n break;\n case 'step':\n this.stepPool.release(allocation.object as PooledStep);\n break;\n case 'formula':\n this.formulaPool.release(allocation.object as PooledFormula);\n break;\n case 'convoy':\n this.convoyPool.release(allocation.object as PooledConvoy);\n break;\n case 'molecule':\n this.moleculePool.release(allocation.object as PooledMolecule);\n break;\n // Generic objects are not pooled\n }\n }\n}\n\n// ============================================================================\n// Type Mapping\n// ============================================================================\n\n/**\n * Allocatable type names\n */\nexport type AllocatableType = 'bead' | 'step' | 'formula' | 'convoy' | 'molecule';\n\n/**\n * Type map for allocatable types\n */\nexport interface TypeMap {\n bead: PooledBead;\n step: PooledStep;\n formula: PooledFormula;\n convoy: PooledConvoy;\n molecule: PooledMolecule;\n}\n\n// ============================================================================\n// Scoped Arena\n// ============================================================================\n\n/**\n * Scoped arena that auto-resets when disposed\n *\n * Useful for RAII-style memory management with try/finally patterns.\n *\n * @example\n * ```typescript\n * using arena = scopedArena('batch-operation');\n * const beads = arena.allocateMany('bead', 100);\n * // ... process beads ...\n * // Arena automatically resets when scope exits\n * ```\n */\nexport function scopedArena(name: string, config?: ArenaConfig): Arena & Disposable {\n const arena = new Arena(name, config);\n return Object.assign(arena, {\n [Symbol.dispose](): void {\n arena.reset();\n },\n });\n}\n\n/**\n * Execute a function with a scoped arena\n *\n * The arena is automatically reset after the function completes.\n */\nexport async function withArena<T>(\n name: string,\n fn: (arena: Arena) => T | Promise<T>,\n config?: ArenaConfig\n): Promise<T> {\n const arena = new Arena(name, config);\n try {\n return await fn(arena);\n } finally {\n arena.reset();\n }\n}\n\n/**\n * Synchronous version of withArena\n */\nexport function withArenaSync<T>(\n name: string,\n fn: (arena: Arena) => T,\n config?: ArenaConfig\n): T {\n const arena = new Arena(name, config);\n try {\n return fn(arena);\n } finally {\n arena.reset();\n }\n}\n\n// ============================================================================\n// Arena Pool Manager\n// ============================================================================\n\n/**\n * Manages multiple arenas for different operation types\n */\nexport class ArenaManager {\n private arenas: Map<string, Arena> = new Map();\n private stats = {\n totalArenas: 0,\n activeArenas: 0,\n totalMemorySaved: 0,\n };\n\n /**\n * Get or create an arena by name\n */\n getArena(name: string, config?: ArenaConfig): Arena {\n let arena = this.arenas.get(name);\n if (!arena) {\n arena = new Arena(name, config);\n this.arenas.set(name, arena);\n this.stats.totalArenas++;\n this.stats.activeArenas++;\n }\n return arena;\n }\n\n /**\n * Reset a specific arena\n */\n resetArena(name: string): void {\n const arena = this.arenas.get(name);\n if (arena) {\n const saved = arena.getStats().memoryUsed;\n arena.reset();\n this.stats.totalMemorySaved += saved;\n }\n }\n\n /**\n * Reset all arenas\n */\n resetAll(): void {\n for (const arena of this.arenas.values()) {\n const saved = arena.getStats().memoryUsed;\n arena.reset();\n this.stats.totalMemorySaved += saved;\n }\n }\n\n /**\n * Dispose an arena\n */\n disposeArena(name: string): void {\n const arena = this.arenas.get(name);\n if (arena) {\n arena.dispose();\n this.arenas.delete(name);\n this.stats.activeArenas--;\n }\n }\n\n /**\n * Dispose all arenas\n */\n disposeAll(): void {\n for (const arena of this.arenas.values()) {\n arena.dispose();\n }\n this.arenas.clear();\n this.stats.activeArenas = 0;\n }\n\n /**\n * Get manager statistics\n */\n getStats(): typeof this.stats & { arenaStats: Record<string, ArenaStats> } {\n const arenaStats: Record<string, ArenaStats> = {};\n for (const [name, arena] of this.arenas) {\n arenaStats[name] = arena.getStats();\n }\n return { ...this.stats, arenaStats };\n }\n}\n\n/**\n * Global arena manager instance\n */\nexport const arenaManager = new ArenaManager();\n\nexport default Arena;\n","/**\n * Memory Monitoring for Gas Town Bridge Plugin\n *\n * Provides comprehensive memory monitoring, limits, and pressure callbacks.\n * Integrates with object pools and arena allocators to track memory usage.\n *\n * Target: <10MB heap for 10k beads\n *\n * Features:\n * - Real-time memory usage tracking\n * - Configurable memory limits\n * - Memory pressure callbacks\n * - Automatic cleanup triggers\n * - Integration with V8 GC hooks (when available)\n *\n * @module gastown-bridge/memory/monitor\n */\n\nimport { EventEmitter } from 'events';\nimport {\n getAllPoolStats,\n getPoolEfficiencySummary,\n clearAllPools,\n type PoolStats,\n} from './pool.js';\nimport { arenaManager } from './arena.js';\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Memory statistics snapshot\n */\nexport interface MemoryStats {\n /** Heap memory used (bytes) */\n heapUsed: number;\n /** Heap memory total (bytes) */\n heapTotal: number;\n /** External memory (bytes) */\n external: number;\n /** Array buffers memory (bytes) */\n arrayBuffers: number;\n /** RSS (Resident Set Size) in bytes */\n rss: number;\n /** Pool memory stats */\n pools: {\n totalMemorySaved: number;\n hitRate: number;\n objectsInUse: number;\n objectsAvailable: number;\n };\n /** Arena memory stats */\n arenas: {\n activeArenas: number;\n totalMemoryUsed: number;\n totalMemorySaved: number;\n };\n /** Timestamp of snapshot */\n timestamp: Date;\n /** Whether under memory pressure */\n underPressure: boolean;\n}\n\n/**\n * Memory pressure levels\n */\nexport type MemoryPressureLevel = 'none' | 'low' | 'medium' | 'high' | 'critical';\n\n/**\n * Memory pressure callback\n */\nexport type MemoryPressureCallback = (\n level: MemoryPressureLevel,\n stats: MemoryStats\n) => void;\n\n/**\n * Memory monitor configuration\n */\nexport interface MemoryMonitorConfig {\n /** Memory limit in bytes (0 = no limit) */\n memoryLimit?: number;\n /** Low pressure threshold (0-1 of limit) */\n lowPressureThreshold?: number;\n /** Medium pressure threshold (0-1 of limit) */\n mediumPressureThreshold?: number;\n /** High pressure threshold (0-1 of limit) */\n highPressureThreshold?: number;\n /** Critical pressure threshold (0-1 of limit) */\n criticalPressureThreshold?: number;\n /** Polling interval in ms (0 = manual only) */\n pollInterval?: number;\n /** Enable automatic cleanup on pressure */\n autoCleanup?: boolean;\n /** Enable GC hints when available */\n gcHints?: boolean;\n}\n\n/**\n * Memory monitor events\n */\nexport interface MemoryMonitorEvents {\n 'pressure:none': (stats: MemoryStats) => void;\n 'pressure:low': (stats: MemoryStats) => void;\n 'pressure:medium': (stats: MemoryStats) => void;\n 'pressure:high': (stats: MemoryStats) => void;\n 'pressure:critical': (stats: MemoryStats) => void;\n 'limit:exceeded': (stats: MemoryStats) => void;\n 'cleanup:triggered': (beforeStats: MemoryStats, afterStats: MemoryStats) => void;\n 'snapshot': (stats: MemoryStats) => void;\n}\n\n// ============================================================================\n// Memory Monitor Implementation\n// ============================================================================\n\n/**\n * Memory Monitor\n *\n * Tracks memory usage and triggers pressure callbacks when thresholds\n * are exceeded. Integrates with object pools and arenas.\n *\n * @example\n * ```typescript\n * const monitor = new MemoryMonitor({\n * memoryLimit: 10 * 1024 * 1024, // 10MB\n * pollInterval: 1000,\n * autoCleanup: true,\n * });\n *\n * monitor.onMemoryPressure((level, stats) => {\n * console.log(`Memory pressure: ${level}`, stats);\n * });\n *\n * monitor.start();\n * ```\n */\nexport class MemoryMonitor extends EventEmitter {\n private config: Required<MemoryMonitorConfig>;\n private pollTimer?: ReturnType<typeof setInterval>;\n private pressureCallbacks: MemoryPressureCallback[] = [];\n private lastPressureLevel: MemoryPressureLevel = 'none';\n private running = false;\n\n // Historical stats for trend analysis\n private statsHistory: MemoryStats[] = [];\n private maxHistorySize = 60; // 1 minute at 1s intervals\n\n constructor(config?: MemoryMonitorConfig) {\n super();\n this.config = {\n memoryLimit: config?.memoryLimit ?? 0,\n lowPressureThreshold: config?.lowPressureThreshold ?? 0.5,\n mediumPressureThreshold: config?.mediumPressureThreshold ?? 0.7,\n highPressureThreshold: config?.highPressureThreshold ?? 0.85,\n criticalPressureThreshold: config?.criticalPressureThreshold ?? 0.95,\n pollInterval: config?.pollInterval ?? 0,\n autoCleanup: config?.autoCleanup ?? false,\n gcHints: config?.gcHints ?? true,\n };\n }\n\n /**\n * Get current memory usage statistics\n */\n getMemoryUsage(): MemoryStats {\n const memUsage = process.memoryUsage();\n const poolSummary = getPoolEfficiencySummary();\n const arenaStats = arenaManager.getStats();\n\n // Calculate arena memory\n let arenaMemory = 0;\n for (const stats of Object.values(arenaStats.arenaStats)) {\n arenaMemory += stats.memoryUsed;\n }\n\n const stats: MemoryStats = {\n heapUsed: memUsage.heapUsed,\n heapTotal: memUsage.heapTotal,\n external: memUsage.external,\n arrayBuffers: memUsage.arrayBuffers,\n rss: memUsage.rss,\n pools: {\n totalMemorySaved: poolSummary.totalMemorySavedKB * 1024,\n hitRate: poolSummary.totalHitRate,\n objectsInUse: poolSummary.totalObjectsInUse,\n objectsAvailable: poolSummary.totalObjectsAvailable,\n },\n arenas: {\n activeArenas: arenaStats.activeArenas,\n totalMemoryUsed: arenaMemory,\n totalMemorySaved: arenaStats.totalMemorySaved,\n },\n timestamp: new Date(),\n underPressure: this.lastPressureLevel !== 'none',\n };\n\n return stats;\n }\n\n /**\n * Set memory limit\n */\n setMemoryLimit(bytes: number): void {\n this.config.memoryLimit = bytes;\n }\n\n /**\n * Get current memory limit\n */\n getMemoryLimit(): number {\n return this.config.memoryLimit;\n }\n\n /**\n * Register a memory pressure callback\n */\n onMemoryPressure(callback: MemoryPressureCallback): () => void {\n this.pressureCallbacks.push(callback);\n return () => {\n const index = this.pressureCallbacks.indexOf(callback);\n if (index !== -1) {\n this.pressureCallbacks.splice(index, 1);\n }\n };\n }\n\n /**\n * Check current pressure level\n */\n checkPressure(): MemoryPressureLevel {\n if (this.config.memoryLimit === 0) {\n return 'none';\n }\n\n const stats = this.getMemoryUsage();\n const usage = stats.heapUsed / this.config.memoryLimit;\n\n if (usage >= this.config.criticalPressureThreshold) {\n return 'critical';\n }\n if (usage >= this.config.highPressureThreshold) {\n return 'high';\n }\n if (usage >= this.config.mediumPressureThreshold) {\n return 'medium';\n }\n if (usage >= this.config.lowPressureThreshold) {\n return 'low';\n }\n return 'none';\n }\n\n /**\n * Start monitoring\n */\n start(): void {\n if (this.running) return;\n this.running = true;\n\n if (this.config.pollInterval > 0) {\n this.pollTimer = setInterval(() => {\n this.poll();\n }, this.config.pollInterval);\n }\n }\n\n /**\n * Stop monitoring\n */\n stop(): void {\n this.running = false;\n if (this.pollTimer) {\n clearInterval(this.pollTimer);\n this.pollTimer = undefined;\n }\n }\n\n /**\n * Manual poll (also called automatically if pollInterval > 0)\n */\n poll(): void {\n const stats = this.getMemoryUsage();\n const level = this.checkPressure();\n\n // Add to history\n this.statsHistory.push(stats);\n if (this.statsHistory.length > this.maxHistorySize) {\n this.statsHistory.shift();\n }\n\n // Emit snapshot event\n this.emit('snapshot', stats);\n\n // Check for pressure level changes\n if (level !== this.lastPressureLevel) {\n this.lastPressureLevel = level;\n stats.underPressure = level !== 'none';\n\n // Emit pressure event\n this.emit(`pressure:${level}`, stats);\n\n // Call callbacks\n for (const callback of this.pressureCallbacks) {\n try {\n callback(level, stats);\n } catch (error) {\n console.error('[MemoryMonitor] Pressure callback error:', error);\n }\n }\n\n // Auto cleanup on high/critical pressure\n if (this.config.autoCleanup && (level === 'high' || level === 'critical')) {\n this.triggerCleanup();\n }\n }\n\n // Check if limit exceeded\n if (this.config.memoryLimit > 0 && stats.heapUsed > this.config.memoryLimit) {\n this.emit('limit:exceeded', stats);\n }\n }\n\n /**\n * Trigger memory cleanup\n */\n triggerCleanup(): void {\n const beforeStats = this.getMemoryUsage();\n\n // Clear object pools\n clearAllPools();\n\n // Reset all arenas\n arenaManager.resetAll();\n\n // Request GC if available and hints enabled\n if (this.config.gcHints && typeof global.gc === 'function') {\n global.gc();\n }\n\n const afterStats = this.getMemoryUsage();\n this.emit('cleanup:triggered', beforeStats, afterStats);\n }\n\n /**\n * Get memory trend (bytes/second)\n */\n getMemoryTrend(): number {\n if (this.statsHistory.length < 2) {\n return 0;\n }\n\n const oldest = this.statsHistory[0];\n const newest = this.statsHistory[this.statsHistory.length - 1];\n const timeDiff = newest.timestamp.getTime() - oldest.timestamp.getTime();\n\n if (timeDiff === 0) return 0;\n\n const memoryDiff = newest.heapUsed - oldest.heapUsed;\n return (memoryDiff / timeDiff) * 1000; // bytes per second\n }\n\n /**\n * Estimate time until limit reached (ms)\n */\n estimateTimeToLimit(): number | null {\n if (this.config.memoryLimit === 0) {\n return null;\n }\n\n const trend = this.getMemoryTrend();\n if (trend <= 0) {\n return null; // Memory is stable or decreasing\n }\n\n const stats = this.getMemoryUsage();\n const remaining = this.config.memoryLimit - stats.heapUsed;\n return (remaining / trend) * 1000;\n }\n\n /**\n * Get pool-specific statistics\n */\n getPoolStats(): Record<string, PoolStats> {\n return getAllPoolStats();\n }\n\n /**\n * Get historical stats\n */\n getHistory(): MemoryStats[] {\n return [...this.statsHistory];\n }\n\n /**\n * Clear historical stats\n */\n clearHistory(): void {\n this.statsHistory.length = 0;\n }\n\n /**\n * Check if running\n */\n isRunning(): boolean {\n return this.running;\n }\n\n /**\n * Get configuration\n */\n getConfig(): Readonly<Required<MemoryMonitorConfig>> {\n return { ...this.config };\n }\n\n /**\n * Update configuration\n */\n updateConfig(config: Partial<MemoryMonitorConfig>): void {\n Object.assign(this.config, config);\n\n // Restart polling if interval changed\n if (config.pollInterval !== undefined && this.running) {\n this.stop();\n this.start();\n }\n }\n}\n\n// ============================================================================\n// Convenience Functions\n// ============================================================================\n\n/**\n * Get current memory usage (simple API)\n */\nexport function getMemoryUsage(): MemoryStats {\n const monitor = new MemoryMonitor();\n return monitor.getMemoryUsage();\n}\n\n/**\n * Set a memory limit and callback (simple API)\n */\nexport function setMemoryLimit(\n bytes: number,\n onPressure?: MemoryPressureCallback\n): MemoryMonitor {\n const monitor = new MemoryMonitor({\n memoryLimit: bytes,\n pollInterval: 1000,\n autoCleanup: true,\n });\n\n if (onPressure) {\n monitor.onMemoryPressure(onPressure);\n }\n\n monitor.start();\n return monitor;\n}\n\n/**\n * Simple pressure callback registration (uses default monitor)\n */\nlet defaultMonitor: MemoryMonitor | null = null;\n\nexport function onMemoryPressure(callback: MemoryPressureCallback): () => void {\n if (!defaultMonitor) {\n defaultMonitor = new MemoryMonitor({\n memoryLimit: 10 * 1024 * 1024, // 10MB default\n pollInterval: 1000,\n autoCleanup: true,\n });\n defaultMonitor.start();\n }\n\n return defaultMonitor.onMemoryPressure(callback);\n}\n\n/**\n * Get the default monitor instance\n */\nexport function getDefaultMonitor(): MemoryMonitor | null {\n return defaultMonitor;\n}\n\n/**\n * Stop and dispose the default monitor\n */\nexport function disposeDefaultMonitor(): void {\n if (defaultMonitor) {\n defaultMonitor.stop();\n defaultMonitor = null;\n }\n}\n\n// ============================================================================\n// Memory Budget\n// ============================================================================\n\n/**\n * Memory budget for component-level tracking\n */\nexport interface MemoryBudget {\n name: string;\n allocated: number;\n used: number;\n limit: number;\n}\n\n/**\n * Memory budget manager\n */\nexport class MemoryBudgetManager {\n private budgets: Map<string, MemoryBudget> = new Map();\n private totalLimit: number;\n\n constructor(totalLimit: number = 10 * 1024 * 1024) {\n this.totalLimit = totalLimit;\n }\n\n /**\n * Allocate a budget for a component\n */\n allocateBudget(name: string, limit: number): boolean {\n const currentTotal = this.getTotalAllocated();\n if (currentTotal + limit > this.totalLimit) {\n return false;\n }\n\n this.budgets.set(name, {\n name,\n allocated: limit,\n used: 0,\n limit,\n });\n return true;\n }\n\n /**\n * Update usage for a budget\n */\n updateUsage(name: string, used: number): void {\n const budget = this.budgets.get(name);\n if (budget) {\n budget.used = used;\n }\n }\n\n /**\n * Check if a budget is exceeded\n */\n isExceeded(name: string): boolean {\n const budget = this.budgets.get(name);\n return budget ? budget.used > budget.limit : false;\n }\n\n /**\n * Get budget for a component\n */\n getBudget(name: string): MemoryBudget | undefined {\n return this.budgets.get(name);\n }\n\n /**\n * Get all budgets\n */\n getAllBudgets(): MemoryBudget[] {\n return Array.from(this.budgets.values());\n }\n\n /**\n * Get total allocated budget\n */\n getTotalAllocated(): number {\n return Array.from(this.budgets.values()).reduce((sum, b) => sum + b.allocated, 0);\n }\n\n /**\n * Get total used\n */\n getTotalUsed(): number {\n return Array.from(this.budgets.values()).reduce((sum, b) => sum + b.used, 0);\n }\n\n /**\n * Free a budget\n */\n freeBudget(name: string): void {\n this.budgets.delete(name);\n }\n\n /**\n * Get total limit\n */\n getTotalLimit(): number {\n return this.totalLimit;\n }\n\n /**\n * Set total limit\n */\n setTotalLimit(limit: number): void {\n this.totalLimit = limit;\n }\n}\n\n/**\n * Global memory budget manager for 10MB target\n */\nexport const memoryBudget = new MemoryBudgetManager(10 * 1024 * 1024);\n\n// Pre-allocate budgets for major components\nmemoryBudget.allocateBudget('beads', 5 * 1024 * 1024); // 5MB for beads\nmemoryBudget.allocateBudget('formulas', 1 * 1024 * 1024); // 1MB for formulas\nmemoryBudget.allocateBudget('convoys', 1 * 1024 * 1024); // 1MB for convoys\nmemoryBudget.allocateBudget('wasm', 2 * 1024 * 1024); // 2MB for WASM\nmemoryBudget.allocateBudget('misc', 1 * 1024 * 1024); // 1MB for misc\n\nexport default MemoryMonitor;\n","/**\n * Lazy Loading Utilities for Gas Town Bridge Plugin\n *\n * Provides lazy initialization patterns to defer resource loading\n * until first use, reducing initial memory footprint and startup time.\n *\n * Features:\n * - Lazy WASM module loading\n * - Deferred convoy observer initialization\n * - Lazy bridge initialization\n * - Resource cleanup on idle\n *\n * @module gastown-bridge/memory/lazy\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Lazy value state\n */\nexport type LazyState = 'uninitialized' | 'initializing' | 'initialized' | 'error' | 'disposed';\n\n/**\n * Lazy initialization options\n */\nexport interface LazyOptions<T> {\n /** Factory function to create the value */\n factory: () => T | Promise<T>;\n /** Optional cleanup function */\n cleanup?: (value: T) => void | Promise<void>;\n /** Auto-dispose after idle time (ms, 0 = never) */\n idleTimeout?: number;\n /** Error handler */\n onError?: (error: Error) => void;\n /** Name for debugging */\n name?: string;\n}\n\n/**\n * Lazy loader statistics\n */\nexport interface LazyStats {\n name: string;\n state: LazyState;\n initCount: number;\n disposeCount: number;\n errorCount: number;\n lastInitTime?: Date;\n lastAccessTime?: Date;\n initDurationMs?: number;\n}\n\n// ============================================================================\n// Lazy Value Implementation\n// ============================================================================\n\n/**\n * Lazy value wrapper with automatic initialization\n *\n * @example\n * ```typescript\n * const lazyWasm = new Lazy({\n * name: 'wasm-module',\n * factory: async () => await loadWasmModule(),\n * cleanup: (wasm) => wasm.dispose(),\n * idleTimeout: 60000, // Auto-dispose after 1 minute of inactivity\n * });\n *\n * // First access triggers initialization\n * const wasm = await lazyWasm.get();\n *\n * // Check if initialized without triggering\n * if (lazyWasm.isInitialized()) { ... }\n *\n * // Manual disposal\n * await lazyWasm.dispose();\n * ```\n */\nexport class Lazy<T> {\n private value?: T;\n private state: LazyState = 'uninitialized';\n private initPromise?: Promise<T>;\n private idleTimer?: ReturnType<typeof setTimeout>;\n private options: Required<LazyOptions<T>>;\n private stats: LazyStats;\n\n constructor(options: LazyOptions<T>) {\n this.options = {\n factory: options.factory,\n cleanup: options.cleanup ?? (() => {}),\n idleTimeout: options.idleTimeout ?? 0,\n onError: options.onError ?? console.error,\n name: options.name ?? 'lazy-value',\n };\n\n this.stats = {\n name: this.options.name,\n state: 'uninitialized',\n initCount: 0,\n disposeCount: 0,\n errorCount: 0,\n };\n }\n\n /**\n * Get the lazy value, initializing if necessary\n */\n async get(): Promise<T> {\n this.resetIdleTimer();\n\n if (this.state === 'initialized' && this.value !== undefined) {\n this.stats.lastAccessTime = new Date();\n return this.value;\n }\n\n if (this.state === 'initializing' && this.initPromise) {\n return this.initPromise;\n }\n\n if (this.state === 'error') {\n // Retry on error\n this.state = 'uninitialized';\n }\n\n if (this.state === 'disposed') {\n // Re-initialize after disposal\n this.state = 'uninitialized';\n }\n\n return this.initialize();\n }\n\n /**\n * Get synchronously (throws if not initialized)\n */\n getSync(): T {\n if (this.state !== 'initialized' || this.value === undefined) {\n throw new Error(`Lazy value '${this.options.name}' not initialized`);\n }\n this.resetIdleTimer();\n this.stats.lastAccessTime = new Date();\n return this.value;\n }\n\n /**\n * Check if initialized\n */\n isInitialized(): boolean {\n return this.state === 'initialized' && this.value !== undefined;\n }\n\n /**\n * Get current state\n */\n getState(): LazyState {\n return this.state;\n }\n\n /**\n * Initialize without returning value\n */\n async initialize(): Promise<T> {\n if (this.state === 'initialized' && this.value !== undefined) {\n return this.value;\n }\n\n this.state = 'initializing';\n this.stats.state = 'initializing';\n const startTime = Date.now();\n\n this.initPromise = (async () => {\n try {\n const value = await this.options.factory();\n this.value = value;\n this.state = 'initialized';\n this.stats.state = 'initialized';\n this.stats.initCount++;\n this.stats.lastInitTime = new Date();\n this.stats.lastAccessTime = new Date();\n this.stats.initDurationMs = Date.now() - startTime;\n return value;\n } catch (error) {\n this.state = 'error';\n this.stats.state = 'error';\n this.stats.errorCount++;\n this.options.onError(error as Error);\n throw error;\n } finally {\n this.initPromise = undefined;\n }\n })();\n\n return this.initPromise;\n }\n\n /**\n * Dispose the lazy value\n */\n async dispose(): Promise<void> {\n this.clearIdleTimer();\n\n if (this.value !== undefined) {\n try {\n await this.options.cleanup(this.value);\n } catch (error) {\n this.options.onError(error as Error);\n }\n }\n\n this.value = undefined;\n this.state = 'disposed';\n this.stats.state = 'disposed';\n this.stats.disposeCount++;\n }\n\n /**\n * Get statistics\n */\n getStats(): Readonly<LazyStats> {\n return { ...this.stats };\n }\n\n // =========================================================================\n // Private Methods\n // =========================================================================\n\n private resetIdleTimer(): void {\n this.clearIdleTimer();\n\n if (this.options.idleTimeout > 0) {\n this.idleTimer = setTimeout(() => {\n this.dispose().catch(this.options.onError);\n }, this.options.idleTimeout);\n }\n }\n\n private clearIdleTimer(): void {\n if (this.idleTimer) {\n clearTimeout(this.idleTimer);\n this.idleTimer = undefined;\n }\n }\n}\n\n// ============================================================================\n// Lazy Singleton Pattern\n// ============================================================================\n\n/**\n * Lazy singleton registry\n */\nconst lazySingletons = new Map<string, Lazy<unknown>>();\n\n/**\n * Get or create a lazy singleton\n */\nexport function getLazySingleton<T>(\n key: string,\n options: LazyOptions<T>\n): Lazy<T> {\n let lazy = lazySingletons.get(key) as Lazy<T> | undefined;\n if (!lazy) {\n lazy = new Lazy({ ...options, name: options.name ?? key });\n lazySingletons.set(key, lazy as Lazy<unknown>);\n }\n return lazy;\n}\n\n/**\n * Dispose a lazy singleton\n */\nexport async function disposeLazySingleton(key: string): Promise<void> {\n const lazy = lazySingletons.get(key);\n if (lazy) {\n await lazy.dispose();\n lazySingletons.delete(key);\n }\n}\n\n/**\n * Dispose all lazy singletons\n */\nexport async function disposeAllLazySingletons(): Promise<void> {\n const promises: Promise<void>[] = [];\n for (const lazy of lazySingletons.values()) {\n promises.push(lazy.dispose());\n }\n await Promise.all(promises);\n lazySingletons.clear();\n}\n\n// ============================================================================\n// Lazy Module Loader\n// ============================================================================\n\n/**\n * Lazy module loader for dynamic imports\n *\n * @example\n * ```typescript\n * const wasmLoader = new LazyModule(() => import('./wasm-loader.js'));\n * const { parseFormula } = await wasmLoader.get();\n * ```\n */\nexport class LazyModule<T> {\n private lazy: Lazy<T>;\n\n constructor(\n importer: () => Promise<T>,\n options?: Omit<LazyOptions<T>, 'factory'>\n ) {\n this.lazy = new Lazy({\n ...options,\n factory: importer,\n });\n }\n\n /**\n * Get the module\n */\n async get(): Promise<T> {\n return this.lazy.get();\n }\n\n /**\n * Check if loaded\n */\n isLoaded(): boolean {\n return this.lazy.isInitialized();\n }\n\n /**\n * Dispose module\n */\n async dispose(): Promise<void> {\n return this.lazy.dispose();\n }\n}\n\n// ============================================================================\n// Lazy Bridge\n// ============================================================================\n\n/**\n * Lazy bridge wrapper for Gas Town bridges\n *\n * Defers bridge initialization until first use.\n */\nexport class LazyBridge<T extends { initialize?: () => Promise<void> }> {\n private lazy: Lazy<T>;\n\n constructor(\n factory: () => T | Promise<T>,\n options?: Omit<LazyOptions<T>, 'factory'>\n ) {\n this.lazy = new Lazy({\n ...options,\n factory: async () => {\n const bridge = await factory();\n if (bridge.initialize) {\n await bridge.initialize();\n }\n return bridge;\n },\n });\n }\n\n /**\n * Get the bridge\n */\n async get(): Promise<T> {\n return this.lazy.get();\n }\n\n /**\n * Check if initialized\n */\n isInitialized(): boolean {\n return this.lazy.isInitialized();\n }\n\n /**\n * Dispose bridge\n */\n async dispose(): Promise<void> {\n return this.lazy.dispose();\n }\n\n /**\n * Get stats\n */\n getStats(): LazyStats {\n return this.lazy.getStats();\n }\n}\n\n// ============================================================================\n// Lazy WASM Loader\n// ============================================================================\n\n/**\n * Lazy WASM module loader with caching\n */\nexport class LazyWasm<T> {\n private lazy: Lazy<T>;\n private cached: T | null = null;\n\n constructor(\n loader: () => Promise<T>,\n options?: {\n name?: string;\n idleTimeout?: number;\n onError?: (error: Error) => void;\n }\n ) {\n this.lazy = new Lazy({\n factory: async () => {\n // Check cache first\n if (this.cached) {\n return this.cached;\n }\n const module = await loader();\n this.cached = module;\n return module;\n },\n cleanup: () => {\n // WASM modules are typically not disposable\n // but we can clear the cache reference\n this.cached = null;\n },\n name: options?.name ?? 'lazy-wasm',\n idleTimeout: options?.idleTimeout ?? 0,\n onError: options?.onError ?? console.error,\n });\n }\n\n /**\n * Get the WASM module\n */\n async get(): Promise<T> {\n return this.lazy.get();\n }\n\n /**\n * Check if loaded\n */\n isLoaded(): boolean {\n return this.lazy.isInitialized();\n }\n\n /**\n * Clear cache (module will be reloaded on next access)\n */\n clearCache(): void {\n this.cached = null;\n }\n\n /**\n * Get stats\n */\n getStats(): LazyStats {\n return this.lazy.getStats();\n }\n}\n\n// ============================================================================\n// Lazy Observer\n// ============================================================================\n\n/**\n * Lazy observer pattern for convoy watching\n *\n * Defers observer creation until first watch request.\n */\nexport class LazyObserver<T> {\n private lazy: Lazy<T>;\n private watchCount = 0;\n\n constructor(\n factory: () => T | Promise<T>,\n options?: Omit<LazyOptions<T>, 'factory'>\n ) {\n this.lazy = new Lazy({\n ...options,\n factory,\n });\n }\n\n /**\n * Start watching (initializes observer if needed)\n */\n async watch(): Promise<T> {\n this.watchCount++;\n return this.lazy.get();\n }\n\n /**\n * Stop watching (disposes observer if no more watchers)\n */\n async unwatch(): Promise<void> {\n this.watchCount--;\n if (this.watchCount <= 0) {\n this.watchCount = 0;\n await this.lazy.dispose();\n }\n }\n\n /**\n * Get current watch count\n */\n getWatchCount(): number {\n return this.watchCount;\n }\n\n /**\n * Check if active\n */\n isActive(): boolean {\n return this.lazy.isInitialized() && this.watchCount > 0;\n }\n\n /**\n * Force dispose\n */\n async dispose(): Promise<void> {\n this.watchCount = 0;\n return this.lazy.dispose();\n }\n}\n\n// ============================================================================\n// Lazy Initialization Decorators (for future use)\n// ============================================================================\n\n/**\n * Decorator metadata storage\n */\nconst lazyMetadata = new WeakMap<object, Map<string | symbol, Lazy<unknown>>>();\n\n/**\n * Get or create lazy value for a property\n */\nfunction getOrCreateLazy<T>(\n target: object,\n propertyKey: string | symbol,\n factory: () => T | Promise<T>\n): Lazy<T> {\n let map = lazyMetadata.get(target);\n if (!map) {\n map = new Map();\n lazyMetadata.set(target, map);\n }\n\n let lazy = map.get(propertyKey) as Lazy<T> | undefined;\n if (!lazy) {\n lazy = new Lazy({ factory, name: String(propertyKey) });\n map.set(propertyKey, lazy as Lazy<unknown>);\n }\n\n return lazy;\n}\n\n/**\n * Create a lazy property getter\n */\nexport function createLazyProperty<T>(\n factory: () => T | Promise<T>,\n options?: Omit<LazyOptions<T>, 'factory'>\n): { get: () => Promise<T>; isInitialized: () => boolean } {\n const lazy = new Lazy({ ...options, factory });\n return {\n get: () => lazy.get(),\n isInitialized: () => lazy.isInitialized(),\n };\n}\n\nexport default Lazy;\n","/**\n * Memory Management Module for Gas Town Bridge Plugin\n *\n * Provides comprehensive memory optimization through:\n * - Object pooling for frequently allocated objects (Bead, Formula, Step, Convoy, Molecule)\n * - Arena allocators for batch operations with O(1) reset\n * - Memory monitoring with pressure callbacks\n * - Lazy loading for deferred resource initialization\n *\n * Target: 75% memory reduction, <10MB heap for 10k beads\n *\n * @module gastown-bridge/memory\n */\n\n// ============================================================================\n// Object Pooling\n// ============================================================================\n\nexport {\n // Core pool class\n ObjectPool,\n type Poolable,\n type PoolStats,\n type PoolConfig,\n\n // Pooled object classes\n PooledBead,\n PooledStep,\n PooledFormula,\n PooledConvoy,\n PooledMolecule,\n\n // Pre-configured pool instances\n beadPool,\n formulaPool,\n stepPool,\n convoyPool,\n moleculePool,\n\n // Pool management utilities\n type PoolType,\n getAllPoolStats,\n getTotalMemorySaved,\n clearAllPools,\n preWarmAllPools,\n getPoolEfficiencySummary,\n} from './pool.js';\n\n// ============================================================================\n// Arena Allocator\n// ============================================================================\n\nexport {\n // Core arena class\n Arena,\n type ArenaStats,\n type ArenaConfig,\n type AllocatableType,\n type TypeMap,\n\n // Scoped arena utilities\n scopedArena,\n withArena,\n withArenaSync,\n\n // Arena management\n ArenaManager,\n arenaManager,\n} from './arena.js';\n\n// ============================================================================\n// Memory Monitoring\n// ============================================================================\n\nexport {\n // Core monitor class\n MemoryMonitor,\n type MemoryStats,\n type MemoryPressureLevel,\n type MemoryPressureCallback,\n type MemoryMonitorConfig,\n type MemoryMonitorEvents,\n\n // Convenience functions\n getMemoryUsage,\n setMemoryLimit,\n onMemoryPressure,\n getDefaultMonitor,\n disposeDefaultMonitor,\n\n // Memory budget management\n MemoryBudgetManager,\n type MemoryBudget,\n memoryBudget,\n} from './monitor.js';\n\n// ============================================================================\n// Lazy Loading\n// ============================================================================\n\nexport {\n // Core lazy class\n Lazy,\n type LazyState,\n type LazyOptions,\n type LazyStats,\n\n // Singleton management\n getLazySingleton,\n disposeLazySingleton,\n disposeAllLazySingletons,\n\n // Specialized lazy loaders\n LazyModule,\n LazyBridge,\n LazyWasm,\n LazyObserver,\n\n // Utilities\n createLazyProperty,\n} from './lazy.js';\n\n// ============================================================================\n// Integrated Memory Management\n// ============================================================================\n\nimport {\n clearAllPools,\n preWarmAllPools,\n getAllPoolStats,\n getPoolEfficiencySummary,\n} from './pool.js';\nimport { arenaManager } from './arena.js';\nimport { MemoryMonitor, type MemoryStats } from './monitor.js';\nimport { disposeAllLazySingletons } from './lazy.js';\n\n/**\n * Memory system configuration\n */\nexport interface MemorySystemConfig {\n /** Memory limit in bytes (default: 10MB) */\n memoryLimit?: number;\n /** Enable auto-cleanup on pressure */\n autoCleanup?: boolean;\n /** Pre-warm pools on init */\n preWarmPools?: boolean;\n /** Polling interval for monitor (ms) */\n pollInterval?: number;\n}\n\n/**\n * Memory system state\n */\nexport interface MemorySystemState {\n initialized: boolean;\n monitor: MemoryMonitor | null;\n config: MemorySystemConfig;\n}\n\nconst state: MemorySystemState = {\n initialized: false,\n monitor: null,\n config: {},\n};\n\n/**\n * Initialize the memory management system\n *\n * @example\n * ```typescript\n * import { initializeMemorySystem, getSystemMemoryStats } from './memory/index.js';\n *\n * await initializeMemorySystem({\n * memoryLimit: 10 * 1024 * 1024, // 10MB\n * autoCleanup: true,\n * preWarmPools: true,\n * });\n *\n * // Monitor memory usage\n * const stats = getSystemMemoryStats();\n * console.log('Heap used:', stats.heapUsed);\n * ```\n */\nexport function initializeMemorySystem(config?: MemorySystemConfig): void {\n if (state.initialized) {\n console.warn('[memory] Memory system already initialized');\n return;\n }\n\n state.config = {\n memoryLimit: config?.memoryLimit ?? 10 * 1024 * 1024, // 10MB default\n autoCleanup: config?.autoCleanup ?? true,\n preWarmPools: config?.preWarmPools ?? false,\n pollInterval: config?.pollInterval ?? 5000,\n };\n\n // Create and start monitor\n state.monitor = new MemoryMonitor({\n memoryLimit: state.config.memoryLimit,\n autoCleanup: state.config.autoCleanup,\n pollInterval: state.config.pollInterval,\n });\n state.monitor.start();\n\n // Pre-warm pools if requested\n if (state.config.preWarmPools) {\n preWarmAllPools();\n }\n\n state.initialized = true;\n console.log('[memory] Memory system initialized', {\n limit: `${(state.config.memoryLimit! / (1024 * 1024)).toFixed(2)}MB`,\n autoCleanup: state.config.autoCleanup,\n preWarmed: state.config.preWarmPools,\n });\n}\n\n/**\n * Get system memory statistics\n */\nexport function getSystemMemoryStats(): MemoryStats | null {\n return state.monitor?.getMemoryUsage() ?? null;\n}\n\n/**\n * Get comprehensive memory report\n */\nexport function getMemoryReport(): {\n system: MemoryStats | null;\n pools: ReturnType<typeof getAllPoolStats>;\n poolEfficiency: ReturnType<typeof getPoolEfficiencySummary>;\n arenas: ReturnType<typeof arenaManager.getStats>;\n config: MemorySystemConfig;\n} {\n return {\n system: getSystemMemoryStats(),\n pools: getAllPoolStats(),\n poolEfficiency: getPoolEfficiencySummary(),\n arenas: arenaManager.getStats(),\n config: state.config,\n };\n}\n\n/**\n * Trigger manual memory cleanup\n */\nexport function triggerMemoryCleanup(): void {\n // Clear all object pools\n clearAllPools();\n\n // Reset all arenas\n arenaManager.resetAll();\n\n // Dispose lazy singletons\n disposeAllLazySingletons().catch(console.error);\n\n // Trigger monitor cleanup\n state.monitor?.triggerCleanup();\n\n console.log('[memory] Manual cleanup completed');\n}\n\n/**\n * Shutdown the memory system\n */\nexport async function shutdownMemorySystem(): Promise<void> {\n if (!state.initialized) return;\n\n // Stop monitor\n state.monitor?.stop();\n state.monitor = null;\n\n // Clear pools\n clearAllPools();\n\n // Dispose arenas\n arenaManager.disposeAll();\n\n // Dispose lazy singletons\n await disposeAllLazySingletons();\n\n state.initialized = false;\n console.log('[memory] Memory system shut down');\n}\n\n/**\n * Check if memory system is initialized\n */\nexport function isMemorySystemInitialized(): boolean {\n return state.initialized;\n}\n\n/**\n * Get memory system monitor\n */\nexport function getMemoryMonitor(): MemoryMonitor | null {\n return state.monitor;\n}\n\n// ============================================================================\n// Quick-access utilities for common operations\n// ============================================================================\n\nimport {\n beadPool,\n stepPool,\n formulaPool,\n convoyPool,\n moleculePool,\n PooledBead,\n PooledStep,\n PooledFormula,\n PooledConvoy,\n PooledMolecule,\n} from './pool.js';\n\n/**\n * Acquire a pooled bead\n */\nexport function acquireBead(): PooledBead {\n return beadPool.acquire();\n}\n\n/**\n * Release a pooled bead\n */\nexport function releaseBead(bead: PooledBead): void {\n beadPool.release(bead);\n}\n\n/**\n * Acquire a pooled step\n */\nexport function acquireStep(): PooledStep {\n return stepPool.acquire();\n}\n\n/**\n * Release a pooled step\n */\nexport function releaseStep(step: PooledStep): void {\n stepPool.release(step);\n}\n\n/**\n * Acquire a pooled formula\n */\nexport function acquireFormula(): PooledFormula {\n return formulaPool.acquire();\n}\n\n/**\n * Release a pooled formula\n */\nexport function releaseFormula(formula: PooledFormula): void {\n formulaPool.release(formula);\n}\n\n/**\n * Acquire a pooled convoy\n */\nexport function acquireConvoy(): PooledConvoy {\n return convoyPool.acquire();\n}\n\n/**\n * Release a pooled convoy\n */\nexport function releaseConvoy(convoy: PooledConvoy): void {\n convoyPool.release(convoy);\n}\n\n/**\n * Acquire a pooled molecule\n */\nexport function acquireMolecule(): PooledMolecule {\n return moleculePool.acquire();\n}\n\n/**\n * Release a pooled molecule\n */\nexport function releaseMolecule(molecule: PooledMolecule): void {\n moleculePool.release(molecule);\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import {a as a$1,c}from'./chunk-U74VYTRV.js';import {execFile,spawn}from'child_process';import {promisify}from'util';import {z}from'zod';/**
2
+ * @claude-flow/plugin-gastown-bridge v0.1.4
3
+ *
4
+ * WASM-accelerated Gas Town orchestration for Claude Flow V3
5
+ * Bundle optimized: <100KB gzipped total
6
+ *
7
+ * @license MIT
8
+ * @copyright 2024 rUv
9
+ */
10
+ var D=promisify(execFile),E=new a$1({maxEntries:100,ttlMs:30*1e3}),m=new a$1({maxEntries:500,ttlMs:60*1e3}),w=new a$1({maxEntries:50,ttlMs:300*1e3}),v=new c,B=new a$1({maxEntries:100,ttlMs:30*1e3});function C(i){let e=2166136261;for(let t of i){for(let r=0;r<t.length;r++)e^=t.charCodeAt(r),e=e*16777619>>>0;e^=255;}return e.toString(36)}var u=z.string().max(4096,"String too long").refine(i=>!/[;&|`$(){}><\n\r\0]/.test(i),"String contains shell metacharacters");z.string().min(1,"Identifier cannot be empty").max(128,"Identifier too long").regex(/^[a-zA-Z][a-zA-Z0-9_-]*$/,"Invalid identifier format");var I=z.string().min(1,"Bead ID cannot be empty").max(64,"Bead ID too long").regex(/^[a-zA-Z0-9_-]+$/,"Invalid bead ID format"),R=z.enum(["prompt","response","code","context","memory","tool-call","tool-result","system","error","metadata"]),S=z.object({id:I,type:R,content:z.string(),timestamp:z.string().datetime().optional(),metadata:z.record(z.unknown()).optional(),parentId:I.optional(),threadId:z.string().optional(),agentId:z.string().optional(),tags:z.array(z.string()).optional(),embedding:z.array(z.number()).optional(),hash:z.string().optional()}),_=z.string().max(1024,"Argument too long").refine(i=>!i.includes("\0"),"Argument contains null byte").refine(i=>!/[;&|`$(){}><]/.test(i),"Argument contains shell metacharacters"),a=class extends Error{constructor(t,r,s,n,o){super(t);this.code=r;this.command=s;this.args=n;this.cause=o;this.name="BdBridgeError";}code;command;args;cause},M={debug:(i,e)=>console.debug(`[bd-bridge] ${i}`,e??""),info:(i,e)=>console.info(`[bd-bridge] ${i}`,e??""),warn:(i,e)=>console.warn(`[bd-bridge] ${i}`,e??""),error:(i,e)=>console.error(`[bd-bridge] ${i}`,e??"")},x=new Set(["list","get","create","update","delete","search","export","import","thread","stats","help","version","config","sync"]),y=class i{config;logger;initialized=false;static CACHEABLE_COMMANDS=new Set(["list","get","search","stats","version","help","config"]);static STATIC_COMMANDS=new Set(["version","help","stats","config"]);constructor(e,t){this.config={bdPath:e?.bdPath??"bd",cwd:e?.cwd??process.cwd(),timeout:e?.timeout??6e4,maxBuffer:e?.maxBuffer??50*1024*1024,env:e?.env??process.env,storagePath:e?.storagePath??""},this.logger=t??M;}async initialize(){try{let e=await this.execBd(["version"]);if(!e.success)throw new a("Failed to verify bd installation","COMMAND_NOT_FOUND","bd",["version"]);this.initialized=!0,this.logger.info("Beads bridge initialized",{bdPath:this.config.bdPath,version:e.data});}catch(e){throw e instanceof a?e:new a("Failed to initialize Beads bridge","COMMAND_NOT_FOUND","bd",["version"],e)}}async execBd(e,t=false){let r=Date.now(),s=this.validateAndSanitizeArgs(e),n=s[0];if(n&&!x.has(n))throw new a(`Command not allowed: ${n}`,"INVALID_ARGUMENT","bd",s);let o=C(s),h=!t&&n&&i.CACHEABLE_COMMANDS.has(n);n&&i.STATIC_COMMANDS.has(n);if(h){let c=w.get(o);if(c)return this.logger.debug("Cache hit for bd command",{command:n}),{...c,durationMs:0}}return v.dedupe(o,async()=>{try{this.logger.debug("Executing bd command",{command:"bd",args:s});let{stdout:c,stderr:l}=await D(this.config.bdPath,s,{cwd:this.config.cwd,env:this.config.env,timeout:this.config.timeout,maxBuffer:this.config.maxBuffer,shell:!1,windowsHide:!0}),g=Date.now()-r;l&&l.trim()&&this.logger.warn("bd stderr output",{stderr:l});let f={success:!0,data:c.trim(),command:"bd",args:s,durationMs:g};return h&&f.success&&w.set(o,f),f}catch(c){let l=Date.now()-r,g=c;if(g.killed)throw new a("Command execution timed out","TIMEOUT","bd",s);if(g.code==="ENOENT")throw new a(`bd executable not found at: ${this.config.bdPath}`,"COMMAND_NOT_FOUND","bd",s);return {success:false,error:g.stderr||g.message,command:"bd",args:s,durationMs:l}}})}execBdStreaming(e){let t=Date.now(),r=this.validateAndSanitizeArgs(e),s=r[0];if(s&&!x.has(s))throw new a(`Command not allowed: ${s}`,"INVALID_ARGUMENT","bd",r);this.logger.debug("Executing bd command (streaming)",{command:"bd",args:r});let n=spawn(this.config.bdPath,r,{cwd:this.config.cwd,env:this.config.env,timeout:this.config.timeout,shell:false,windowsHide:true}),o=new Promise((h,p)=>{let c="",l="";n.stdout?.on("data",g=>{c+=g.toString();}),n.stderr?.on("data",g=>{l+=g.toString();}),n.on("close",g=>{let f=Date.now()-t;h(g===0?{success:true,data:c.trim(),command:"bd",args:r,durationMs:f}:{success:false,error:l||`Process exited with code ${g}`,command:"bd",args:r,durationMs:f});}),n.on("error",g=>{p(new a(g.message,"EXECUTION_FAILED","bd",r));});});return {process:n,stdout:n.stdout,stderr:n.stderr,promise:o}}parseBdOutput(e){if(!e||e.trim()==="")return [];let t=C([e]),r=B.get(t);if(r)return r;let s=e.trim().split(`
11
+ `),n=[],o=[];for(let h=0;h<s.length;h++){let p=s[h]?.trim();if(p)try{let c=JSON.parse(p),l=S.parse(c);n.push(l),m.set(l.id,l);}catch(c){o.push({line:h+1,error:c instanceof Error?c.message:String(c)});}}return o.length>0&&this.logger.warn("Some beads failed to parse",{totalLines:s.length,parsed:n.length,errors:o.length,firstErrors:o.slice(0,3)}),B.set(t,n),n}parseSingleBead(e){if(!e||e.trim()==="")throw new a("Empty output from bd command","INVALID_OUTPUT");try{let t=JSON.parse(e);return S.parse(t)}catch(t){throw new a("Failed to parse bead output","PARSE_ERROR",void 0,void 0,t)}}async listBeads(e){this.ensureInitialized();let t=["list","--format","jsonl"];if(e?.type){let s=Array.isArray(e.type)?e.type:[e.type];for(let n of s)t.push("--type",n);}if(e?.threadId&&t.push("--thread",u.parse(e.threadId)),e?.agentId&&t.push("--agent",u.parse(e.agentId)),e?.tags&&e.tags.length>0)for(let s of e.tags)t.push("--tag",u.parse(s));e?.after&&t.push("--after",e.after),e?.before&&t.push("--before",e.before),e?.limit!==void 0&&t.push("--limit",String(Math.min(e.limit,1e4))),e?.offset!==void 0&&t.push("--offset",String(e.offset)),e?.sortBy&&t.push("--sort",e.sortBy),e?.sortOrder&&t.push("--order",e.sortOrder);let r=await this.execBd(t);if(!r.success)throw new a(r.error??"Failed to list beads","EXECUTION_FAILED","bd",t);return this.parseBdOutput(r.data??"")}async getBead(e){this.ensureInitialized();let t=I.parse(e),r=m.get(t);if(r)return this.logger.debug("Bead cache hit",{beadId:t}),r;let s=["get",t,"--format","json"],n=await this.execBd(s);if(!n.success)throw n.error?.includes("not found")?new a(`Bead not found: ${e}`,"BEAD_NOT_FOUND","bd",s):new a(n.error??"Failed to get bead","EXECUTION_FAILED","bd",s);let o=this.parseSingleBead(n.data??"");return m.set(o.id,o),o}async createBead(e){this.ensureInitialized();let t=["create","--type",e.type,"--content",u.parse(e.content),"--format","json"];if(e.parentId&&t.push("--parent",I.parse(e.parentId)),e.threadId&&t.push("--thread",u.parse(e.threadId)),e.agentId&&t.push("--agent",u.parse(e.agentId)),e.tags&&e.tags.length>0)for(let s of e.tags)t.push("--tag",u.parse(s));e.metadata&&t.push("--metadata",JSON.stringify(e.metadata));let r=await this.execBd(t);if(!r.success)throw new a(r.error??"Failed to create bead","EXECUTION_FAILED","bd",t);return this.parseSingleBead(r.data??"")}async searchBeads(e,t){this.ensureInitialized();let r=["search",u.parse(e),"--format","jsonl"];if(t?.limit!==void 0&&r.push("--limit",String(Math.min(t.limit,1e3))),t?.threshold!==void 0&&r.push("--threshold",String(t.threshold)),t?.type){let n=Array.isArray(t.type)?t.type:[t.type];for(let o of n)r.push("--type",o);}let s=await this.execBd(r);if(!s.success)throw new a(s.error??"Bead search failed","EXECUTION_FAILED","bd",r);return this.parseBdOutput(s.data??"")}async exportBeads(e){this.ensureInitialized();let t=["export","--format","jsonl"];e?.threadId&&t.push("--thread",u.parse(e.threadId)),e?.after&&t.push("--after",e.after),e?.before&&t.push("--before",e.before);let r=await this.execBd(t);if(!r.success)throw new a(r.error??"Export failed","EXECUTION_FAILED","bd",t);return r.data??""}async getStats(){this.ensureInitialized();let e=["stats","--format","json"],t=await this.execBd(e);if(!t.success)throw new a(t.error??"Failed to get stats","EXECUTION_FAILED","bd",e);try{return JSON.parse(t.data??"{}")}catch{throw new a("Failed to parse stats output","PARSE_ERROR","bd",e)}}validateAndSanitizeArgs(e){return e.map((t,r)=>{try{return _.parse(t)}catch(s){throw new a(`Invalid argument at index ${r}: ${t}`,"VALIDATION_ERROR","bd",e,s)}})}ensureInitialized(){if(!this.initialized)throw new a("Beads bridge not initialized. Call initialize() first.","EXECUTION_FAILED")}isInitialized(){return this.initialized}getConfig(){return {...this.config}}getCacheStats(){return {beadQueryCache:E.stats(),singleBeadCache:m.stats(),staticCache:w.stats(),parsedCache:B.stats()}}clearCaches(){E.clear(),m.clear(),w.clear(),B.clear();}invalidateBeadCache(e){m.delete(e),E.clear(),B.clear();}};function X(i,e){return new y(i,e)}export{I as a,R as b,S as c,_ as d,a as e,y as f,X as g};//# sourceMappingURL=chunk-EBOVUTYL.js.map
12
+ //# sourceMappingURL=chunk-EBOVUTYL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/bridges/bd-bridge.ts"],"names":["execFileAsync","promisify","execFile","beadQueryCache","LRUCache","singleBeadCache","staticCache","execDedup","BatchDeduplicator","parsedCache","hashArgs","args","hash","arg","i","SafeStringSchema","z","val","BeadIdSchema","BeadTypeSchema","BeadSchema","BdArgumentSchema","BdBridgeError","message","code","command","cause","defaultLogger","msg","meta","ALLOWED_BD_COMMANDS","BdBridge","_BdBridge","config","logger","result","error","skipCache","startTime","validatedArgs","subcommand","cacheKey","isCacheable","cached","stdout","stderr","durationMs","err","childProcess","spawn","promise","resolve","reject","data","output","lines","beads","errors","line","parsed","validated","query","types","type","tag","beadId","validatedId","bead","params","options","index","createBdBridge"],"mappings":"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","file":"chunk-EBOVUTYL.js","sourcesContent":["/**\n * Beads CLI Bridge\n *\n * Provides a secure wrapper around the `bd` (Beads) CLI tool.\n * Implements command execution with proper input sanitization,\n * argument validation, JSONL parsing, and error handling.\n *\n * Security Features:\n * - All inputs validated with Zod schemas\n * - No shell execution (uses execFile)\n * - Command allowlist enforcement\n * - Argument sanitization\n * - JSONL streaming support\n *\n * @module v3/plugins/gastown-bridge/bridges/bd-bridge\n */\n\nimport { execFile, spawn, ChildProcess } from 'child_process';\nimport { promisify } from 'util';\nimport { z } from 'zod';\n\nimport {\n LRUCache,\n BatchDeduplicator,\n Lazy,\n} from '../cache.js';\n\nconst execFileAsync = promisify(execFile);\n\n// ============================================================================\n// Performance Caches\n// ============================================================================\n\n/** Result cache for memoizing bead queries */\nconst beadQueryCache = new LRUCache<string, Bead[]>({\n maxEntries: 100,\n ttlMs: 30 * 1000, // 30 sec TTL (beads may change)\n});\n\n/** Single bead cache */\nconst singleBeadCache = new LRUCache<string, Bead>({\n maxEntries: 500,\n ttlMs: 60 * 1000, // 1 min TTL\n});\n\n/** Static data cache (version, stats) */\nconst staticCache = new LRUCache<string, unknown>({\n maxEntries: 50,\n ttlMs: 5 * 60 * 1000, // 5 min TTL\n});\n\n/** Deduplicator for concurrent CLI calls */\nconst execDedup = new BatchDeduplicator<BdResult<string>>();\n\n/** Parsed JSONL cache */\nconst parsedCache = new LRUCache<string, Bead[]>({\n maxEntries: 100,\n ttlMs: 30 * 1000,\n});\n\n/**\n * FNV-1a hash for cache keys\n */\nfunction hashArgs(args: string[]): string {\n let hash = 2166136261;\n for (const arg of args) {\n for (let i = 0; i < arg.length; i++) {\n hash ^= arg.charCodeAt(i);\n hash = (hash * 16777619) >>> 0;\n }\n hash ^= 0xff; // separator\n }\n return hash.toString(36);\n}\n\n// ============================================================================\n// Zod Validation Schemas\n// ============================================================================\n\n/**\n * Safe string pattern - no shell metacharacters\n */\nconst SafeStringSchema = z.string()\n .max(4096, 'String too long')\n .refine(\n (val) => !/[;&|`$(){}><\\n\\r\\0]/.test(val),\n 'String contains shell metacharacters'\n );\n\n/**\n * Safe identifier pattern\n */\nconst IdentifierSchema = z.string()\n .min(1, 'Identifier cannot be empty')\n .max(128, 'Identifier too long')\n .regex(/^[a-zA-Z][a-zA-Z0-9_-]*$/, 'Invalid identifier format');\n\n/**\n * Bead ID schema (UUID or custom format)\n */\nconst BeadIdSchema = z.string()\n .min(1, 'Bead ID cannot be empty')\n .max(64, 'Bead ID too long')\n .regex(/^[a-zA-Z0-9_-]+$/, 'Invalid bead ID format');\n\n/**\n * Bead type schema\n */\nconst BeadTypeSchema = z.enum([\n 'prompt',\n 'response',\n 'code',\n 'context',\n 'memory',\n 'tool-call',\n 'tool-result',\n 'system',\n 'error',\n 'metadata',\n]);\n\n/**\n * Bead schema\n */\nexport const BeadSchema = z.object({\n id: BeadIdSchema,\n type: BeadTypeSchema,\n content: z.string(),\n timestamp: z.string().datetime().optional(),\n metadata: z.record(z.unknown()).optional(),\n parentId: BeadIdSchema.optional(),\n threadId: z.string().optional(),\n agentId: z.string().optional(),\n tags: z.array(z.string()).optional(),\n embedding: z.array(z.number()).optional(),\n hash: z.string().optional(),\n});\n\n/**\n * BD command argument schema\n */\nconst BdArgumentSchema = z.string()\n .max(1024, 'Argument too long')\n .refine(\n (val) => !val.includes('\\0'),\n 'Argument contains null byte'\n )\n .refine(\n (val) => !/[;&|`$(){}><]/.test(val),\n 'Argument contains shell metacharacters'\n );\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Bead type (inferred from schema)\n */\nexport type Bead = z.infer<typeof BeadSchema>;\n\n/**\n * Bead type enum\n */\nexport type BeadType = z.infer<typeof BeadTypeSchema>;\n\n/**\n * Beads bridge configuration\n */\nexport interface BdBridgeConfig {\n /**\n * Path to bd executable\n * Default: 'bd' (assumes in PATH)\n */\n bdPath?: string;\n\n /**\n * Working directory for execution\n */\n cwd?: string;\n\n /**\n * Execution timeout in milliseconds\n * Default: 60000 (60 seconds)\n */\n timeout?: number;\n\n /**\n * Maximum buffer size for output\n * Default: 50MB (beads can be large)\n */\n maxBuffer?: number;\n\n /**\n * Environment variables\n */\n env?: NodeJS.ProcessEnv;\n\n /**\n * Default storage path\n */\n storagePath?: string;\n}\n\n/**\n * Bead query parameters\n */\nexport interface BeadQuery {\n type?: BeadType | BeadType[];\n threadId?: string;\n agentId?: string;\n tags?: string[];\n after?: string; // ISO timestamp\n before?: string; // ISO timestamp\n limit?: number;\n offset?: number;\n sortBy?: 'timestamp' | 'id' | 'type';\n sortOrder?: 'asc' | 'desc';\n}\n\n/**\n * Bead creation parameters\n */\nexport interface CreateBeadParams {\n type: BeadType;\n content: string;\n parentId?: string;\n threadId?: string;\n agentId?: string;\n tags?: string[];\n metadata?: Record<string, unknown>;\n}\n\n/**\n * BD execution result\n */\nexport interface BdResult<T = unknown> {\n success: boolean;\n data?: T;\n error?: string;\n command: string;\n args: string[];\n durationMs: number;\n}\n\n/**\n * Streaming execution result\n */\nexport interface BdStreamResult {\n process: ChildProcess;\n stdout: NodeJS.ReadableStream | null;\n stderr: NodeJS.ReadableStream | null;\n promise: Promise<BdResult<string>>;\n}\n\n/**\n * Logger interface\n */\nexport interface BdLogger {\n debug: (msg: string, meta?: Record<string, unknown>) => void;\n info: (msg: string, meta?: Record<string, unknown>) => void;\n warn: (msg: string, meta?: Record<string, unknown>) => void;\n error: (msg: string, meta?: Record<string, unknown>) => void;\n}\n\n// ============================================================================\n// Errors\n// ============================================================================\n\n/**\n * Beads bridge error codes\n */\nexport type BdErrorCode =\n | 'COMMAND_NOT_FOUND'\n | 'EXECUTION_FAILED'\n | 'TIMEOUT'\n | 'INVALID_ARGUMENT'\n | 'INVALID_OUTPUT'\n | 'PARSE_ERROR'\n | 'VALIDATION_ERROR'\n | 'BEAD_NOT_FOUND';\n\n/**\n * Beads bridge error\n */\nexport class BdBridgeError extends Error {\n constructor(\n message: string,\n public readonly code: BdErrorCode,\n public readonly command?: string,\n public readonly args?: string[],\n public readonly cause?: Error\n ) {\n super(message);\n this.name = 'BdBridgeError';\n }\n}\n\n// ============================================================================\n// Default Logger\n// ============================================================================\n\nconst defaultLogger: BdLogger = {\n debug: (msg, meta) => console.debug(`[bd-bridge] ${msg}`, meta ?? ''),\n info: (msg, meta) => console.info(`[bd-bridge] ${msg}`, meta ?? ''),\n warn: (msg, meta) => console.warn(`[bd-bridge] ${msg}`, meta ?? ''),\n error: (msg, meta) => console.error(`[bd-bridge] ${msg}`, meta ?? ''),\n};\n\n// ============================================================================\n// Allowed Commands\n// ============================================================================\n\n/**\n * Allowed bd subcommands (allowlist)\n */\nconst ALLOWED_BD_COMMANDS = new Set([\n 'list',\n 'get',\n 'create',\n 'update',\n 'delete',\n 'search',\n 'export',\n 'import',\n 'thread',\n 'stats',\n 'help',\n 'version',\n 'config',\n 'sync',\n]);\n\n// ============================================================================\n// Beads Bridge Implementation\n// ============================================================================\n\n/**\n * Beads CLI Bridge\n *\n * Secure wrapper around the `bd` CLI tool for bead management.\n * Supports JSONL output parsing for streaming large datasets.\n *\n * @example\n * ```typescript\n * const bdBridge = new BdBridge({ bdPath: '/usr/local/bin/bd' });\n * await bdBridge.initialize();\n *\n * const beads = await bdBridge.listBeads({ type: 'prompt', limit: 100 });\n * ```\n */\nexport class BdBridge {\n private config: Required<BdBridgeConfig>;\n private logger: BdLogger;\n private initialized = false;\n\n /** Commands that can be cached (read-only, no side effects) */\n private static readonly CACHEABLE_COMMANDS = new Set([\n 'list',\n 'get',\n 'search',\n 'stats',\n 'version',\n 'help',\n 'config',\n ]);\n\n /** Commands that should use longer cache (static data) */\n private static readonly STATIC_COMMANDS = new Set([\n 'version',\n 'help',\n 'stats',\n 'config',\n ]);\n\n constructor(config?: BdBridgeConfig, logger?: BdLogger) {\n this.config = {\n bdPath: config?.bdPath ?? 'bd',\n cwd: config?.cwd ?? process.cwd(),\n timeout: config?.timeout ?? 60000,\n maxBuffer: config?.maxBuffer ?? 50 * 1024 * 1024,\n env: config?.env ?? process.env,\n storagePath: config?.storagePath ?? '',\n };\n this.logger = logger ?? defaultLogger;\n }\n\n /**\n * Initialize the bridge and verify bd is available\n */\n async initialize(): Promise<void> {\n try {\n const result = await this.execBd(['version']);\n if (!result.success) {\n throw new BdBridgeError(\n 'Failed to verify bd installation',\n 'COMMAND_NOT_FOUND',\n 'bd',\n ['version']\n );\n }\n this.initialized = true;\n this.logger.info('Beads bridge initialized', {\n bdPath: this.config.bdPath,\n version: result.data,\n });\n } catch (error) {\n if (error instanceof BdBridgeError) throw error;\n throw new BdBridgeError(\n 'Failed to initialize Beads bridge',\n 'COMMAND_NOT_FOUND',\n 'bd',\n ['version'],\n error as Error\n );\n }\n }\n\n /**\n * Execute a bd command with validated arguments\n *\n * @param args - Command arguments (validated and sanitized)\n * @returns Command output\n */\n async execBd(args: string[], skipCache = false): Promise<BdResult<string>> {\n const startTime = Date.now();\n\n // Validate all arguments\n const validatedArgs = this.validateAndSanitizeArgs(args);\n\n // Validate subcommand is allowed\n const subcommand = validatedArgs[0];\n if (subcommand && !ALLOWED_BD_COMMANDS.has(subcommand)) {\n throw new BdBridgeError(\n `Command not allowed: ${subcommand}`,\n 'INVALID_ARGUMENT',\n 'bd',\n validatedArgs\n );\n }\n\n // Check cache for cacheable commands\n const cacheKey = hashArgs(validatedArgs);\n const isCacheable = !skipCache && subcommand && BdBridge.CACHEABLE_COMMANDS.has(subcommand);\n const isStatic = subcommand && BdBridge.STATIC_COMMANDS.has(subcommand);\n\n if (isCacheable) {\n const cached = staticCache.get(cacheKey) as BdResult<string> | undefined;\n if (cached) {\n this.logger.debug('Cache hit for bd command', { command: subcommand });\n return {\n ...cached,\n durationMs: 0, // Cached result\n };\n }\n }\n\n // Use deduplication for concurrent identical calls\n return execDedup.dedupe(cacheKey, async () => {\n try {\n this.logger.debug('Executing bd command', {\n command: 'bd',\n args: validatedArgs,\n });\n\n const { stdout, stderr } = await execFileAsync(\n this.config.bdPath,\n validatedArgs,\n {\n cwd: this.config.cwd,\n env: this.config.env,\n timeout: this.config.timeout,\n maxBuffer: this.config.maxBuffer,\n shell: false, // CRITICAL: Never use shell\n windowsHide: true,\n }\n );\n\n const durationMs = Date.now() - startTime;\n\n if (stderr && stderr.trim()) {\n this.logger.warn('bd stderr output', { stderr });\n }\n\n const result: BdResult<string> = {\n success: true,\n data: stdout.trim(),\n command: 'bd',\n args: validatedArgs,\n durationMs,\n };\n\n // Cache successful results\n if (isCacheable && result.success) {\n staticCache.set(cacheKey, result);\n }\n\n return result;\n } catch (error: unknown) {\n const durationMs = Date.now() - startTime;\n const err = error as NodeJS.ErrnoException & {\n killed?: boolean;\n stdout?: string;\n stderr?: string;\n };\n\n if (err.killed) {\n throw new BdBridgeError(\n 'Command execution timed out',\n 'TIMEOUT',\n 'bd',\n validatedArgs\n );\n }\n\n if (err.code === 'ENOENT') {\n throw new BdBridgeError(\n `bd executable not found at: ${this.config.bdPath}`,\n 'COMMAND_NOT_FOUND',\n 'bd',\n validatedArgs\n );\n }\n\n return {\n success: false,\n error: err.stderr || err.message,\n command: 'bd',\n args: validatedArgs,\n durationMs,\n };\n }\n });\n }\n\n /**\n * Execute bd command with streaming output\n */\n execBdStreaming(args: string[]): BdStreamResult {\n const startTime = Date.now();\n\n // Validate all arguments\n const validatedArgs = this.validateAndSanitizeArgs(args);\n\n // Validate subcommand is allowed\n const subcommand = validatedArgs[0];\n if (subcommand && !ALLOWED_BD_COMMANDS.has(subcommand)) {\n throw new BdBridgeError(\n `Command not allowed: ${subcommand}`,\n 'INVALID_ARGUMENT',\n 'bd',\n validatedArgs\n );\n }\n\n this.logger.debug('Executing bd command (streaming)', {\n command: 'bd',\n args: validatedArgs,\n });\n\n const childProcess = spawn(this.config.bdPath, validatedArgs, {\n cwd: this.config.cwd,\n env: this.config.env,\n timeout: this.config.timeout,\n shell: false, // CRITICAL: Never use shell\n windowsHide: true,\n });\n\n const promise = new Promise<BdResult<string>>((resolve, reject) => {\n let stdout = '';\n let stderr = '';\n\n childProcess.stdout?.on('data', (data: Buffer) => {\n stdout += data.toString();\n });\n\n childProcess.stderr?.on('data', (data: Buffer) => {\n stderr += data.toString();\n });\n\n childProcess.on('close', (code) => {\n const durationMs = Date.now() - startTime;\n if (code === 0) {\n resolve({\n success: true,\n data: stdout.trim(),\n command: 'bd',\n args: validatedArgs,\n durationMs,\n });\n } else {\n resolve({\n success: false,\n error: stderr || `Process exited with code ${code}`,\n command: 'bd',\n args: validatedArgs,\n durationMs,\n });\n }\n });\n\n childProcess.on('error', (error) => {\n reject(new BdBridgeError(\n error.message,\n 'EXECUTION_FAILED',\n 'bd',\n validatedArgs\n ));\n });\n });\n\n return {\n process: childProcess,\n stdout: childProcess.stdout,\n stderr: childProcess.stderr,\n promise,\n };\n }\n\n /**\n * Parse JSONL output from bd command into Bead array\n *\n * @param output - JSONL formatted output\n * @returns Array of parsed and validated beads\n */\n parseBdOutput(output: string): Bead[] {\n if (!output || output.trim() === '') {\n return [];\n }\n\n // Check parsed cache first\n const cacheKey = hashArgs([output]);\n const cached = parsedCache.get(cacheKey);\n if (cached) {\n return cached;\n }\n\n const lines = output.trim().split('\\n');\n const beads: Bead[] = [];\n const errors: Array<{ line: number; error: string }> = [];\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]?.trim();\n if (!line) continue;\n\n try {\n const parsed = JSON.parse(line);\n const validated = BeadSchema.parse(parsed);\n beads.push(validated);\n\n // Also cache individual beads\n singleBeadCache.set(validated.id, validated);\n } catch (error) {\n errors.push({\n line: i + 1,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n\n if (errors.length > 0) {\n this.logger.warn('Some beads failed to parse', {\n totalLines: lines.length,\n parsed: beads.length,\n errors: errors.length,\n firstErrors: errors.slice(0, 3),\n });\n }\n\n // Cache the parsed result\n parsedCache.set(cacheKey, beads);\n\n return beads;\n }\n\n /**\n * Parse single bead from JSON output\n */\n parseSingleBead(output: string): Bead {\n if (!output || output.trim() === '') {\n throw new BdBridgeError(\n 'Empty output from bd command',\n 'INVALID_OUTPUT'\n );\n }\n\n try {\n const parsed = JSON.parse(output);\n return BeadSchema.parse(parsed);\n } catch (error) {\n throw new BdBridgeError(\n 'Failed to parse bead output',\n 'PARSE_ERROR',\n undefined,\n undefined,\n error as Error\n );\n }\n }\n\n /**\n * List beads with optional query parameters\n */\n async listBeads(query?: BeadQuery): Promise<Bead[]> {\n this.ensureInitialized();\n\n const args = ['list', '--format', 'jsonl'];\n\n if (query?.type) {\n const types = Array.isArray(query.type) ? query.type : [query.type];\n for (const type of types) {\n args.push('--type', type);\n }\n }\n\n if (query?.threadId) {\n args.push('--thread', SafeStringSchema.parse(query.threadId));\n }\n\n if (query?.agentId) {\n args.push('--agent', SafeStringSchema.parse(query.agentId));\n }\n\n if (query?.tags && query.tags.length > 0) {\n for (const tag of query.tags) {\n args.push('--tag', SafeStringSchema.parse(tag));\n }\n }\n\n if (query?.after) {\n args.push('--after', query.after);\n }\n\n if (query?.before) {\n args.push('--before', query.before);\n }\n\n if (query?.limit !== undefined) {\n args.push('--limit', String(Math.min(query.limit, 10000)));\n }\n\n if (query?.offset !== undefined) {\n args.push('--offset', String(query.offset));\n }\n\n if (query?.sortBy) {\n args.push('--sort', query.sortBy);\n }\n\n if (query?.sortOrder) {\n args.push('--order', query.sortOrder);\n }\n\n const result = await this.execBd(args);\n if (!result.success) {\n throw new BdBridgeError(\n result.error ?? 'Failed to list beads',\n 'EXECUTION_FAILED',\n 'bd',\n args\n );\n }\n\n return this.parseBdOutput(result.data ?? '');\n }\n\n /**\n * Get a single bead by ID\n */\n async getBead(beadId: string): Promise<Bead> {\n this.ensureInitialized();\n\n const validatedId = BeadIdSchema.parse(beadId);\n\n // Check single bead cache first\n const cached = singleBeadCache.get(validatedId);\n if (cached) {\n this.logger.debug('Bead cache hit', { beadId: validatedId });\n return cached;\n }\n\n const args = ['get', validatedId, '--format', 'json'];\n\n const result = await this.execBd(args);\n if (!result.success) {\n if (result.error?.includes('not found')) {\n throw new BdBridgeError(\n `Bead not found: ${beadId}`,\n 'BEAD_NOT_FOUND',\n 'bd',\n args\n );\n }\n throw new BdBridgeError(\n result.error ?? 'Failed to get bead',\n 'EXECUTION_FAILED',\n 'bd',\n args\n );\n }\n\n const bead = this.parseSingleBead(result.data ?? '');\n\n // Cache the result\n singleBeadCache.set(bead.id, bead);\n\n return bead;\n }\n\n /**\n * Create a new bead\n */\n async createBead(params: CreateBeadParams): Promise<Bead> {\n this.ensureInitialized();\n\n const args = [\n 'create',\n '--type', params.type,\n '--content', SafeStringSchema.parse(params.content),\n '--format', 'json',\n ];\n\n if (params.parentId) {\n args.push('--parent', BeadIdSchema.parse(params.parentId));\n }\n\n if (params.threadId) {\n args.push('--thread', SafeStringSchema.parse(params.threadId));\n }\n\n if (params.agentId) {\n args.push('--agent', SafeStringSchema.parse(params.agentId));\n }\n\n if (params.tags && params.tags.length > 0) {\n for (const tag of params.tags) {\n args.push('--tag', SafeStringSchema.parse(tag));\n }\n }\n\n if (params.metadata) {\n args.push('--metadata', JSON.stringify(params.metadata));\n }\n\n const result = await this.execBd(args);\n if (!result.success) {\n throw new BdBridgeError(\n result.error ?? 'Failed to create bead',\n 'EXECUTION_FAILED',\n 'bd',\n args\n );\n }\n\n return this.parseSingleBead(result.data ?? '');\n }\n\n /**\n * Search beads with semantic query\n */\n async searchBeads(query: string, options?: {\n limit?: number;\n threshold?: number;\n type?: BeadType | BeadType[];\n }): Promise<Bead[]> {\n this.ensureInitialized();\n\n const args = [\n 'search',\n SafeStringSchema.parse(query),\n '--format', 'jsonl',\n ];\n\n if (options?.limit !== undefined) {\n args.push('--limit', String(Math.min(options.limit, 1000)));\n }\n\n if (options?.threshold !== undefined) {\n args.push('--threshold', String(options.threshold));\n }\n\n if (options?.type) {\n const types = Array.isArray(options.type) ? options.type : [options.type];\n for (const type of types) {\n args.push('--type', type);\n }\n }\n\n const result = await this.execBd(args);\n if (!result.success) {\n throw new BdBridgeError(\n result.error ?? 'Bead search failed',\n 'EXECUTION_FAILED',\n 'bd',\n args\n );\n }\n\n return this.parseBdOutput(result.data ?? '');\n }\n\n /**\n * Export beads to JSONL format\n */\n async exportBeads(query?: BeadQuery): Promise<string> {\n this.ensureInitialized();\n\n const args = ['export', '--format', 'jsonl'];\n\n if (query?.threadId) {\n args.push('--thread', SafeStringSchema.parse(query.threadId));\n }\n\n if (query?.after) {\n args.push('--after', query.after);\n }\n\n if (query?.before) {\n args.push('--before', query.before);\n }\n\n const result = await this.execBd(args);\n if (!result.success) {\n throw new BdBridgeError(\n result.error ?? 'Export failed',\n 'EXECUTION_FAILED',\n 'bd',\n args\n );\n }\n\n return result.data ?? '';\n }\n\n /**\n * Get bead statistics\n */\n async getStats(): Promise<{\n totalBeads: number;\n beadsByType: Record<string, number>;\n totalThreads: number;\n oldestBead?: string;\n newestBead?: string;\n storageSize?: number;\n }> {\n this.ensureInitialized();\n\n const args = ['stats', '--format', 'json'];\n\n const result = await this.execBd(args);\n if (!result.success) {\n throw new BdBridgeError(\n result.error ?? 'Failed to get stats',\n 'EXECUTION_FAILED',\n 'bd',\n args\n );\n }\n\n try {\n return JSON.parse(result.data ?? '{}');\n } catch {\n throw new BdBridgeError(\n 'Failed to parse stats output',\n 'PARSE_ERROR',\n 'bd',\n args\n );\n }\n }\n\n /**\n * Validate and sanitize command arguments\n */\n private validateAndSanitizeArgs(args: string[]): string[] {\n return args.map((arg, index) => {\n try {\n return BdArgumentSchema.parse(arg);\n } catch (error) {\n throw new BdBridgeError(\n `Invalid argument at index ${index}: ${arg}`,\n 'VALIDATION_ERROR',\n 'bd',\n args,\n error as Error\n );\n }\n });\n }\n\n /**\n * Ensure bridge is initialized\n */\n private ensureInitialized(): void {\n if (!this.initialized) {\n throw new BdBridgeError(\n 'Beads bridge not initialized. Call initialize() first.',\n 'EXECUTION_FAILED'\n );\n }\n }\n\n /**\n * Check if bridge is initialized\n */\n isInitialized(): boolean {\n return this.initialized;\n }\n\n /**\n * Get current configuration\n */\n getConfig(): Readonly<Required<BdBridgeConfig>> {\n return { ...this.config };\n }\n\n /**\n * Get cache statistics for performance monitoring\n */\n getCacheStats(): {\n beadQueryCache: { entries: number; sizeBytes: number };\n singleBeadCache: { entries: number; sizeBytes: number };\n staticCache: { entries: number; sizeBytes: number };\n parsedCache: { entries: number; sizeBytes: number };\n } {\n return {\n beadQueryCache: beadQueryCache.stats(),\n singleBeadCache: singleBeadCache.stats(),\n staticCache: staticCache.stats(),\n parsedCache: parsedCache.stats(),\n };\n }\n\n /**\n * Clear all caches (useful for testing or memory pressure)\n */\n clearCaches(): void {\n beadQueryCache.clear();\n singleBeadCache.clear();\n staticCache.clear();\n parsedCache.clear();\n }\n\n /**\n * Invalidate cache for a specific bead (after create/update/delete)\n */\n invalidateBeadCache(beadId: string): void {\n singleBeadCache.delete(beadId);\n // Also clear query caches since they may contain stale data\n beadQueryCache.clear();\n parsedCache.clear();\n }\n}\n\n/**\n * Create a new Beads bridge instance\n */\nexport function createBdBridge(config?: BdBridgeConfig, logger?: BdLogger): BdBridge {\n return new BdBridge(config, logger);\n}\n\n// Export schemas for external use\nexport {\n SafeStringSchema,\n IdentifierSchema,\n BeadIdSchema,\n BeadTypeSchema,\n BdArgumentSchema,\n};\n\nexport default BdBridge;\n"]}
@@ -0,0 +1,12 @@
1
+ 'use strict';var chunk46PJFOMY_cjs=require('./chunk-46PJFOMY.cjs'),child_process=require('child_process'),util=require('util'),zod=require('zod');/**
2
+ * @claude-flow/plugin-gastown-bridge v0.1.4
3
+ *
4
+ * WASM-accelerated Gas Town orchestration for Claude Flow V3
5
+ * Bundle optimized: <100KB gzipped total
6
+ *
7
+ * @license MIT
8
+ * @copyright 2024 rUv
9
+ */
10
+ var D=util.promisify(child_process.execFile),E=new chunk46PJFOMY_cjs.a({maxEntries:100,ttlMs:30*1e3}),m=new chunk46PJFOMY_cjs.a({maxEntries:500,ttlMs:60*1e3}),w=new chunk46PJFOMY_cjs.a({maxEntries:50,ttlMs:300*1e3}),v=new chunk46PJFOMY_cjs.c,B=new chunk46PJFOMY_cjs.a({maxEntries:100,ttlMs:30*1e3});function C(i){let e=2166136261;for(let t of i){for(let r=0;r<t.length;r++)e^=t.charCodeAt(r),e=e*16777619>>>0;e^=255;}return e.toString(36)}var u=zod.z.string().max(4096,"String too long").refine(i=>!/[;&|`$(){}><\n\r\0]/.test(i),"String contains shell metacharacters");zod.z.string().min(1,"Identifier cannot be empty").max(128,"Identifier too long").regex(/^[a-zA-Z][a-zA-Z0-9_-]*$/,"Invalid identifier format");var I=zod.z.string().min(1,"Bead ID cannot be empty").max(64,"Bead ID too long").regex(/^[a-zA-Z0-9_-]+$/,"Invalid bead ID format"),R=zod.z.enum(["prompt","response","code","context","memory","tool-call","tool-result","system","error","metadata"]),S=zod.z.object({id:I,type:R,content:zod.z.string(),timestamp:zod.z.string().datetime().optional(),metadata:zod.z.record(zod.z.unknown()).optional(),parentId:I.optional(),threadId:zod.z.string().optional(),agentId:zod.z.string().optional(),tags:zod.z.array(zod.z.string()).optional(),embedding:zod.z.array(zod.z.number()).optional(),hash:zod.z.string().optional()}),_=zod.z.string().max(1024,"Argument too long").refine(i=>!i.includes("\0"),"Argument contains null byte").refine(i=>!/[;&|`$(){}><]/.test(i),"Argument contains shell metacharacters"),a=class extends Error{constructor(t,r,s,n,o){super(t);this.code=r;this.command=s;this.args=n;this.cause=o;this.name="BdBridgeError";}code;command;args;cause},M={debug:(i,e)=>console.debug(`[bd-bridge] ${i}`,e??""),info:(i,e)=>console.info(`[bd-bridge] ${i}`,e??""),warn:(i,e)=>console.warn(`[bd-bridge] ${i}`,e??""),error:(i,e)=>console.error(`[bd-bridge] ${i}`,e??"")},x=new Set(["list","get","create","update","delete","search","export","import","thread","stats","help","version","config","sync"]),y=class i{config;logger;initialized=false;static CACHEABLE_COMMANDS=new Set(["list","get","search","stats","version","help","config"]);static STATIC_COMMANDS=new Set(["version","help","stats","config"]);constructor(e,t){this.config={bdPath:e?.bdPath??"bd",cwd:e?.cwd??process.cwd(),timeout:e?.timeout??6e4,maxBuffer:e?.maxBuffer??50*1024*1024,env:e?.env??process.env,storagePath:e?.storagePath??""},this.logger=t??M;}async initialize(){try{let e=await this.execBd(["version"]);if(!e.success)throw new a("Failed to verify bd installation","COMMAND_NOT_FOUND","bd",["version"]);this.initialized=!0,this.logger.info("Beads bridge initialized",{bdPath:this.config.bdPath,version:e.data});}catch(e){throw e instanceof a?e:new a("Failed to initialize Beads bridge","COMMAND_NOT_FOUND","bd",["version"],e)}}async execBd(e,t=false){let r=Date.now(),s=this.validateAndSanitizeArgs(e),n=s[0];if(n&&!x.has(n))throw new a(`Command not allowed: ${n}`,"INVALID_ARGUMENT","bd",s);let o=C(s),h=!t&&n&&i.CACHEABLE_COMMANDS.has(n);n&&i.STATIC_COMMANDS.has(n);if(h){let c=w.get(o);if(c)return this.logger.debug("Cache hit for bd command",{command:n}),{...c,durationMs:0}}return v.dedupe(o,async()=>{try{this.logger.debug("Executing bd command",{command:"bd",args:s});let{stdout:c,stderr:l}=await D(this.config.bdPath,s,{cwd:this.config.cwd,env:this.config.env,timeout:this.config.timeout,maxBuffer:this.config.maxBuffer,shell:!1,windowsHide:!0}),g=Date.now()-r;l&&l.trim()&&this.logger.warn("bd stderr output",{stderr:l});let f={success:!0,data:c.trim(),command:"bd",args:s,durationMs:g};return h&&f.success&&w.set(o,f),f}catch(c){let l=Date.now()-r,g=c;if(g.killed)throw new a("Command execution timed out","TIMEOUT","bd",s);if(g.code==="ENOENT")throw new a(`bd executable not found at: ${this.config.bdPath}`,"COMMAND_NOT_FOUND","bd",s);return {success:false,error:g.stderr||g.message,command:"bd",args:s,durationMs:l}}})}execBdStreaming(e){let t=Date.now(),r=this.validateAndSanitizeArgs(e),s=r[0];if(s&&!x.has(s))throw new a(`Command not allowed: ${s}`,"INVALID_ARGUMENT","bd",r);this.logger.debug("Executing bd command (streaming)",{command:"bd",args:r});let n=child_process.spawn(this.config.bdPath,r,{cwd:this.config.cwd,env:this.config.env,timeout:this.config.timeout,shell:false,windowsHide:true}),o=new Promise((h,p)=>{let c="",l="";n.stdout?.on("data",g=>{c+=g.toString();}),n.stderr?.on("data",g=>{l+=g.toString();}),n.on("close",g=>{let f=Date.now()-t;h(g===0?{success:true,data:c.trim(),command:"bd",args:r,durationMs:f}:{success:false,error:l||`Process exited with code ${g}`,command:"bd",args:r,durationMs:f});}),n.on("error",g=>{p(new a(g.message,"EXECUTION_FAILED","bd",r));});});return {process:n,stdout:n.stdout,stderr:n.stderr,promise:o}}parseBdOutput(e){if(!e||e.trim()==="")return [];let t=C([e]),r=B.get(t);if(r)return r;let s=e.trim().split(`
11
+ `),n=[],o=[];for(let h=0;h<s.length;h++){let p=s[h]?.trim();if(p)try{let c=JSON.parse(p),l=S.parse(c);n.push(l),m.set(l.id,l);}catch(c){o.push({line:h+1,error:c instanceof Error?c.message:String(c)});}}return o.length>0&&this.logger.warn("Some beads failed to parse",{totalLines:s.length,parsed:n.length,errors:o.length,firstErrors:o.slice(0,3)}),B.set(t,n),n}parseSingleBead(e){if(!e||e.trim()==="")throw new a("Empty output from bd command","INVALID_OUTPUT");try{let t=JSON.parse(e);return S.parse(t)}catch(t){throw new a("Failed to parse bead output","PARSE_ERROR",void 0,void 0,t)}}async listBeads(e){this.ensureInitialized();let t=["list","--format","jsonl"];if(e?.type){let s=Array.isArray(e.type)?e.type:[e.type];for(let n of s)t.push("--type",n);}if(e?.threadId&&t.push("--thread",u.parse(e.threadId)),e?.agentId&&t.push("--agent",u.parse(e.agentId)),e?.tags&&e.tags.length>0)for(let s of e.tags)t.push("--tag",u.parse(s));e?.after&&t.push("--after",e.after),e?.before&&t.push("--before",e.before),e?.limit!==void 0&&t.push("--limit",String(Math.min(e.limit,1e4))),e?.offset!==void 0&&t.push("--offset",String(e.offset)),e?.sortBy&&t.push("--sort",e.sortBy),e?.sortOrder&&t.push("--order",e.sortOrder);let r=await this.execBd(t);if(!r.success)throw new a(r.error??"Failed to list beads","EXECUTION_FAILED","bd",t);return this.parseBdOutput(r.data??"")}async getBead(e){this.ensureInitialized();let t=I.parse(e),r=m.get(t);if(r)return this.logger.debug("Bead cache hit",{beadId:t}),r;let s=["get",t,"--format","json"],n=await this.execBd(s);if(!n.success)throw n.error?.includes("not found")?new a(`Bead not found: ${e}`,"BEAD_NOT_FOUND","bd",s):new a(n.error??"Failed to get bead","EXECUTION_FAILED","bd",s);let o=this.parseSingleBead(n.data??"");return m.set(o.id,o),o}async createBead(e){this.ensureInitialized();let t=["create","--type",e.type,"--content",u.parse(e.content),"--format","json"];if(e.parentId&&t.push("--parent",I.parse(e.parentId)),e.threadId&&t.push("--thread",u.parse(e.threadId)),e.agentId&&t.push("--agent",u.parse(e.agentId)),e.tags&&e.tags.length>0)for(let s of e.tags)t.push("--tag",u.parse(s));e.metadata&&t.push("--metadata",JSON.stringify(e.metadata));let r=await this.execBd(t);if(!r.success)throw new a(r.error??"Failed to create bead","EXECUTION_FAILED","bd",t);return this.parseSingleBead(r.data??"")}async searchBeads(e,t){this.ensureInitialized();let r=["search",u.parse(e),"--format","jsonl"];if(t?.limit!==void 0&&r.push("--limit",String(Math.min(t.limit,1e3))),t?.threshold!==void 0&&r.push("--threshold",String(t.threshold)),t?.type){let n=Array.isArray(t.type)?t.type:[t.type];for(let o of n)r.push("--type",o);}let s=await this.execBd(r);if(!s.success)throw new a(s.error??"Bead search failed","EXECUTION_FAILED","bd",r);return this.parseBdOutput(s.data??"")}async exportBeads(e){this.ensureInitialized();let t=["export","--format","jsonl"];e?.threadId&&t.push("--thread",u.parse(e.threadId)),e?.after&&t.push("--after",e.after),e?.before&&t.push("--before",e.before);let r=await this.execBd(t);if(!r.success)throw new a(r.error??"Export failed","EXECUTION_FAILED","bd",t);return r.data??""}async getStats(){this.ensureInitialized();let e=["stats","--format","json"],t=await this.execBd(e);if(!t.success)throw new a(t.error??"Failed to get stats","EXECUTION_FAILED","bd",e);try{return JSON.parse(t.data??"{}")}catch{throw new a("Failed to parse stats output","PARSE_ERROR","bd",e)}}validateAndSanitizeArgs(e){return e.map((t,r)=>{try{return _.parse(t)}catch(s){throw new a(`Invalid argument at index ${r}: ${t}`,"VALIDATION_ERROR","bd",e,s)}})}ensureInitialized(){if(!this.initialized)throw new a("Beads bridge not initialized. Call initialize() first.","EXECUTION_FAILED")}isInitialized(){return this.initialized}getConfig(){return {...this.config}}getCacheStats(){return {beadQueryCache:E.stats(),singleBeadCache:m.stats(),staticCache:w.stats(),parsedCache:B.stats()}}clearCaches(){E.clear(),m.clear(),w.clear(),B.clear();}invalidateBeadCache(e){m.delete(e),E.clear(),B.clear();}};function X(i,e){return new y(i,e)}exports.a=I;exports.b=R;exports.c=S;exports.d=_;exports.e=a;exports.f=y;exports.g=X;//# sourceMappingURL=chunk-I2TLUPMJ.cjs.map
12
+ //# sourceMappingURL=chunk-I2TLUPMJ.cjs.map