# Codebase Structure ## Directory Layout ``` smartdeno/ ├── ts/ # Source code │ ├── index.ts # Main entry point (exports SmartDeno) │ ├── plugins.ts # Dependency imports │ ├── paths.ts # Path configurations │ ├── classes.smartdeno.ts # Main SmartDeno class │ ├── classes.denodownloader.ts # Deno download logic │ ├── classes.scriptserver.ts # Script execution server │ ├── classes.denoexecution.ts # Script execution wrapper │ └── 00_commitinfo_data.ts # Commit metadata ├── test/ # Test files │ └── test.ts # Main test suite ├── dist_ts/ # Compiled output (gitignored) ├── .nogit/ # Temporary/debug files (gitignored) ├── assets/ # Static assets ├── .gitea/ # Gitea-specific configs ├── .vscode/ # VS Code settings ├── .claude/ # Claude Code settings ├── .serena/ # Serena agent settings ├── package.json # Package manifest ├── tsconfig.json # TypeScript config ├── npmextra.json # Extended npm metadata ├── readme.md # Main documentation └── readme.hints.md # Development hints (currently empty) ``` ## Core Classes ### SmartDeno (ts/classes.smartdeno.ts) Main orchestrator class with methods: - `start(options)` - Initialize and download Deno if needed - `stop()` - Cleanup resources - `executeScript(scriptArg)` - Execute a Deno script ### DenoDownloader (ts/classes.denodownloader.ts) Handles Deno binary download: - Fetches latest Deno release from GitHub - Platform detection (Linux, macOS, Windows) - Architecture detection (x64, arm64) - Downloads and extracts Deno binary ### ScriptServer (ts/classes.scriptserver.ts) Internal server for script execution ### DenoExecution (ts/classes.denoexecution.ts) Wraps individual script execution ## Entry Point Flow 1. User imports from `@push.rocks/smartdeno` 2. `index.ts` exports `SmartDeno` class 3. User creates instance: `new SmartDeno()` 4. User calls `await smartDeno.start()` to initialize 5. User calls `await smartDeno.executeScript(code)` to run Deno code ## Dependencies Pattern All external dependencies are: 1. Imported in `plugins.ts` 2. Exported as namespace 3. Used with full path (e.g., `plugins.smartfile.fs.readFile()`)