Skip to main content
Glama

CTX: Context as Code (CaC) tool

by context-hub
MIT License
235
  • Apple
  • Linux
TreeViewConfig.php3.26 kB
<?php declare(strict_types=1); namespace Butschster\ContextGenerator\Lib\TreeBuilder; /** * Configuration container for tree view rendering options */ final readonly class TreeViewConfig implements \JsonSerializable { /** * @param bool $enabled Whether to show the tree view * @param bool $showSize Whether to show file/directory sizes * @param bool $showLastModified Whether to show last modified dates * @param bool $showCharCount Whether to show character counts * @param bool $includeFiles Whether to include files (true) or show only directories (false) * @param int $maxDepth Maximum tree depth to display (0 for unlimited) * @param array<string, string> $dirContext Optional descriptions for specific directories */ public function __construct( public bool $enabled = true, public bool $showSize = false, public bool $showLastModified = false, public bool $showCharCount = false, public bool $includeFiles = true, public int $maxDepth = 0, public array $dirContext = [], ) {} /** * Create a TreeViewConfig from an array configuration */ public static function fromArray(array $data): self { // backward compatibility for old config if (isset($data['showTreeView'])) { return new self(enabled: (bool) $data['showTreeView']); } // Handle boolean case (backward compatibility) if (isset($data['treeView']) && \is_bool($data['treeView'])) { return new self(enabled: $data['treeView']); } // Handle object/array case $config = $data['treeView'] ?? []; if (!\is_array($config)) { return new self(enabled: (bool) $config); } return new self( enabled: $config['enabled'] ?? true, showSize: $config['showSize'] ?? false, showLastModified: $config['showLastModified'] ?? false, showCharCount: $config['showCharCount'] ?? false, includeFiles: $config['includeFiles'] ?? true, maxDepth: $config['maxDepth'] ?? 0, dirContext: $config['dirContext'] ?? [], ); } /** * Get tree view options as an array */ public function getOptions(): array { return [ 'showSize' => $this->showSize, 'showLastModified' => $this->showLastModified, 'showCharCount' => $this->showCharCount, 'includeFiles' => $this->includeFiles, 'maxDepth' => $this->maxDepth, 'dirContext' => $this->dirContext, ]; } /** * @return array<string, mixed> */ public function jsonSerialize(): array { return \array_filter([ 'enabled' => $this->enabled, 'showSize' => $this->showSize, 'showLastModified' => $this->showLastModified, 'showCharCount' => $this->showCharCount, 'includeFiles' => $this->includeFiles === false ? false : null, 'maxDepth' => $this->maxDepth > 0 ? $this->maxDepth : null, 'dirContext' => !empty($this->dirContext) ? $this->dirContext : null, ], static fn($value) => $value !== null); } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/context-hub/generator'

If you have feedback or need assistance with the MCP directory API, please join our Discord server