AI Code Review
Run ID: 69bca79f77c0421c0bf49ee62026-03-29Development
PantheraHive BOS
BOS Dashboard

AI Code Refactoring Suggestions

This output provides comprehensive refactoring suggestions based on the "AI Code Review" workflow. Given the code_input was a test string ("This is a test input..."), the following recommendations are illustrative examples of common refactoring opportunities found in typical codebases. These suggestions aim to enhance code clarity, maintainability, performance, and robustness.

Refactoring Overview

The initial review (simulated) identified several areas for improvement, which are now addressed with specific refactoring recommendations. The overarching goals for these refactorings include:

  1. Improving Readability and Clarity: Making the code easier to understand and follow.
  2. Enhancing Maintainability: Reducing complexity and increasing modularity for easier future modifications.
  3. Optimizing Performance: Identifying and addressing potential bottlenecks.
  4. Strengthening Robustness: Improving error handling and defensive programming.
  5. Adhering to Best Practices: Aligning the code with established language-specific conventions and patterns.

Detailed Refactoring Recommendations

Below are specific refactoring suggestions, presented with a hypothetical "Before" and "After" scenario to illustrate the proposed changes.


1. Improve Function and Variable Naming for Clarity

Issue Identified (Hypothetical): Ambiguous function or variable names that do not clearly convey their purpose.

Recommendation: Rename functions and variables to be descriptive and reflect their actual role within the code.

Rationale: Clear naming significantly improves code readability and reduces the cognitive load for anyone trying to understand the code, including future self.

Example (Simulated - Python):

text • 1,639 chars
**Actionable Detail:**
*   For list/dict creation, consider list/dict comprehensions.
*   Use generator expressions for memory-efficient iteration over large datasets.
*   Employ built-in functions like `map()`, `filter()`, `sum()`, `any()`, `all()` where appropriate.
*   Ensure proper resource management (e.g., `with` statements for files, network connections, locks).
*   Choose the most suitable data structure for the task (e.g., `set` for fast lookups, `dict` for key-value pairs).

---

### Summary of Benefits

Applying these refactoring suggestions will lead to:

*   **Increased Readability**: Code that is easier to understand and reason about.
*   **Enhanced Maintainability**: Simpler to modify, extend, and debug in the future.
*   **Improved Performance**: More efficient execution, especially for critical paths.
*   **Greater Robustness**: Applications that gracefully handle errors and unexpected conditions.
*   **Better Collaboration**: A consistent and well-structured codebase is easier for teams to work on.

### Next Steps

1.  **Review Suggestions**: Carefully examine each refactoring recommendation.
2.  **Prioritize Changes**: Decide which refactorings are most critical or impactful for your project.
3.  **Implement Incrementally**: Apply changes in small, manageable steps.
4.  **Test Thoroughly**: After each refactoring, ensure that existing tests pass and that the functionality remains correct. If unit tests are missing, consider writing them before refactoring to ensure correctness.
5.  **Version Control**: Commit changes frequently with clear commit messages.

### Structured Refactoring Summary

Sandboxed live preview

AI Code Review: Code Analysis Report (Step 1/2)

Workflow: AI Code Review

Step: analyze_code

Review Depth: Standard


1. Overview of Analysis

The provided code_input is a test string: "This is a test input for the AI Code Review workflow. Please generate comprehensive output."

As this is not actual executable code, this analysis will provide a generalized framework of what a comprehensive code review would entail, highlighting the types of insights and recommendations that would be generated if functional code were provided. The goal is to demonstrate the depth and structure of the analyze_code output.

This step focuses on identifying potential issues, suggesting improvements, and providing a foundational understanding of the codebase's quality, maintainability, and adherence to best practices, without performing any automatic fixes (auto_fix: false).

2. General Code Quality Assessment (Simulated)

If actual code were provided, this section would offer a high-level assessment of the codebase across several dimensions:

  • Readability: (e.g., "The code generally follows good formatting, but some functions are overly dense.")
  • Maintainability: (e.g., "The module structure is logical, but several functions exhibit high coupling.")
  • Complexity: (e.g., "Cyclomatic complexity is high in critical business logic functions, indicating potential refactoring needs.")
  • Efficiency: (e.g., "Identified several areas with potential for performance bottlenecks due to N+1 queries or inefficient loops.")
  • Robustness: (e.g., "Error handling is present but inconsistent across different modules.")
  • Security: (e.g., "No obvious critical vulnerabilities, but input validation could be strengthened in certain endpoints.")

Simulated Assessment:

Based on the expectation of a typical codebase, we'd aim for a balance of clarity, efficiency, and robustness. A "Standard" review depth implies a focus on common issues and significant areas for improvement.

3. Key Findings & Areas for Improvement (Simulated)

This section would detail specific categories of findings, along with examples of the types of issues identified.

3.1. Code Structure and Design Principles

  • Modularity & Separation of Concerns:

Issue Type:* Functions or classes handling multiple, unrelated responsibilities.

Example:* A UserService class might be found to also handle UserAuthentication and UserReporting, violating the Single Responsibility Principle.

  • DRY (Don't Repeat Yourself) Violations:

Issue Type:* Duplicated code blocks or logic across different parts of the codebase.

Example:* Identical input validation logic copied in multiple API endpoints instead of being abstracted into a reusable decorator or helper function.

  • Adherence to Design Patterns:

Issue Type:* Inconsistent use of established patterns, or "reinventing the wheel."

Example:* Custom caching mechanism implemented where a standard library or framework feature would suffice and be more maintainable.

3.2. Readability and Maintainability

  • Naming Conventions:

Issue Type:* Inconsistent or unclear variable, function, or class names.

Example:* Use of tmp, val, data without further context, or mixing camelCase and snake_case.

  • Comments and Documentation:

Issue Type:* Lack of comments for complex logic, outdated comments, or insufficient function/module docstrings.

Example:* A complex algorithm lacking an explanation of its purpose or key steps.

  • Code Formatting:

Issue Type:* Inconsistent indentation, line spacing, or adherence to style guides (e.g., PEP 8 for Python, ESLint rules for JavaScript).

Example:* Mixed tab and space indentation, or lines exceeding the recommended character limit.

  • Function/Method Length and Complexity:

Issue Type:* Overly long functions or methods with high cyclomatic complexity, making them hard to understand and test.

Example:* A function with more than 50 lines of code and multiple nested if/else or for loops.

3.3. Performance Considerations

  • Inefficient Algorithms/Data Structures:

Issue Type:* Using suboptimal algorithms or data structures for the task, leading to higher time/space complexity.

Example:* Iterating through a list multiple times where a single pass or a dictionary lookup would be more efficient.

  • Database Query Optimization:

Issue Type:* N+1 query problems, missing indexes, or unoptimized JOIN operations.

Example:* Fetching a list of users, then performing a separate query for each user to get their associated roles.

  • Resource Management:

Issue Type:* Unclosed file handles, database connections, or network sockets.

Example:* Opening a file for writing without ensuring it's closed in all execution paths (e.g., using a with statement).

3.4. Security Vulnerabilities

  • Input Validation:

Issue Type:* Insufficient validation of user inputs, leading to potential injection attacks (SQL, XSS, Command Injection).

Example:* Directly embedding user input into a SQL query without parameterization or escaping.

  • Authentication and Authorization:

Issue Type:* Weak password policies, insecure session management, or improper access control checks.

Example:* Storing passwords in plain text or using easily guessable session IDs.

  • Sensitive Data Handling:

Issue Type:* Logging sensitive information, insecure storage, or improper transmission.

Example:* Logging user passwords or API keys directly to application logs.

3.5. Error Handling and Robustness

  • Missing or Inconsistent Error Handling:

Issue Type:* Lack of try-catch blocks for operations that might fail, or inconsistent error response formats.

Example:* A network request failing without proper error logging or fallback mechanism.

  • Granularity of Exception Handling:

Issue Type:* Catching overly broad exceptions (Exception in Python, catch (Exception e) in Java) without specific handling.

Example:* A single catch-all block that hides specific operational failures.

  • Logging:

Issue Type:* Insufficient logging for debugging and monitoring, or logging at inappropriate levels.

Example:* Critical system errors being logged as INFO level, or no context provided in error messages.

3.6. Testability and Testing Coverage

  • Lack of Unit/Integration Tests:

Issue Type:* Key components or critical paths lacking automated tests.

Example:* A new feature implemented without any corresponding unit tests to verify its correctness.

  • Difficulty in Testing:

Issue Type:* Highly coupled components, global state, or external dependencies making unit testing difficult.

Example:* A function directly accessing a database without dependency injection, requiring a full database setup for unit tests.

  • Test Quality:

Issue Type:* Tests that are brittle, unclear, or don't cover edge cases adequately.

Example:* A test that only checks the "happy path" but ignores error conditions or boundary values.

4. Actionable Recommendations (Simulated)

This section would provide specific, actionable advice based on the identified findings.

  • Refactor [Module/Function Name]:

Recommendation:* "Refactor UserService.processUserData() to extract data validation and persistence logic into separate helper methods/services to reduce its cyclomatic complexity and improve readability. Consider using a Validator class."

  • Introduce [Design Pattern/Abstraction]:

Recommendation:* "Implement a Repository pattern for database interactions within the Order module to abstract data access logic and improve testability."

  • Improve [Aspect]:

Recommendation:* "Enhance input sanitization and validation for all user-provided inputs in the Auth module to mitigate XSS and SQL injection risks. Utilize a robust validation library."

Recommendation:* "Add comprehensive unit tests for the PaymentGateway integration module, focusing on error handling and edge cases for different payment statuses."

  • Address [Specific Issue]:

Recommendation:* "Replace the manual string concatenation for SQL queries in ReportGenerator.generateReport() with parameterized queries to prevent SQL injection vulnerabilities."

Recommendation:* "Ensure all file operations (open(), read(), write()) within the FileProcessor module use with statements to guarantee proper resource closure."

  • Update Documentation/Comments:

Recommendation:* "Add detailed docstrings to calculateTax() explaining the tax calculation logic and any external dependencies or assumptions."

5. Next Steps

This analysis provides a comprehensive overview of potential improvements and areas requiring attention. The next step in the workflow would typically involve:

  • Reviewing Findings: The development team should review these findings and prioritize them based on impact, effort, and project goals.
  • Refactoring and Implementation: Based on the prioritized findings, the team can proceed with implementing the recommended changes.
  • Automated Fixes (if auto_fix was true): If auto_fix were enabled, some of the simpler, less ambiguous recommendations (e.g., formatting, minor syntax fixes) would have been automatically applied in the next step. Since it's false, manual implementation is required.

This detailed output from the analyze_code step equips the user with a clear roadmap for improving their codebase, even with a placeholder input.

ai_code_review.txt
Download source file
Copy all content
Full output as text
Download ZIP
IDE-ready project ZIP
Copy share link
Permanent URL for this run
Get Embed Code
Embed this result on any website
Print / Save PDF
Use browser print dialog
\n\n\n"); var hasSrcMain=Object.keys(extracted).some(function(k){return k.indexOf("src/main")>=0;}); if(!hasSrcMain) zip.file(folder+"src/main."+ext,"import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport App from './App'\nimport './index.css'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n \n \n \n)\n"); var hasSrcApp=Object.keys(extracted).some(function(k){return k==="src/App."+ext||k==="App."+ext;}); if(!hasSrcApp) zip.file(folder+"src/App."+ext,"import React from 'react'\nimport './App.css'\n\nfunction App(){\n return(\n
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n
\n )\n}\nexport default App\n"); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e}\n.app{min-height:100vh;display:flex;flex-direction:column}\n.app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px}\nh1{font-size:2.5rem;font-weight:700}\n"); zip.file(folder+"src/App.css",""); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/pages/.gitkeep",""); zip.file(folder+"src/hooks/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\n## Open in IDE\nOpen the project folder in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Vue (Vite + Composition API + TypeScript) --- */ function buildVue(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "type": "module",\n "scripts": {\n "dev": "vite",\n "build": "vue-tsc -b && vite build",\n "preview": "vite preview"\n },\n "dependencies": {\n "vue": "^3.5.13",\n "vue-router": "^4.4.5",\n "pinia": "^2.3.0",\n "axios": "^1.7.9"\n },\n "devDependencies": {\n "@vitejs/plugin-vue": "^5.2.1",\n "typescript": "~5.7.3",\n "vite": "^6.0.5",\n "vue-tsc": "^2.2.0"\n }\n}\n'); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport { resolve } from 'path'\n\nexport default defineConfig({\n plugins: [vue()],\n resolve: { alias: { '@': resolve(__dirname,'src') } }\n})\n"); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]}\n'); zip.file(folder+"tsconfig.app.json",'{\n "compilerOptions":{\n "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"],\n "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true,\n "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue",\n "strict":true,"paths":{"@/*":["./src/*"]}\n },\n "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"]\n}\n'); zip.file(folder+"env.d.ts","/// \n"); zip.file(folder+"index.html","\n\n\n \n \n "+slugTitle(pn)+"\n\n\n
\n \n\n\n"); var hasMain=Object.keys(extracted).some(function(k){return k==="src/main.ts"||k==="main.ts";}); if(!hasMain) zip.file(folder+"src/main.ts","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport App from './App.vue'\nimport './assets/main.css'\n\nconst app = createApp(App)\napp.use(createPinia())\napp.mount('#app')\n"); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue","\n\n\n\n\n"); zip.file(folder+"src/assets/main.css","*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,sans-serif;background:#fff;color:#213547}\n"); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/views/.gitkeep",""); zip.file(folder+"src/stores/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\nOpen in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- Angular (v19 standalone) --- */ function buildAngular(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var sel=pn.replace(/_/g,"-"); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "scripts": {\n "ng": "ng",\n "start": "ng serve",\n "build": "ng build",\n "test": "ng test"\n },\n "dependencies": {\n "@angular/animations": "^19.0.0",\n "@angular/common": "^19.0.0",\n "@angular/compiler": "^19.0.0",\n "@angular/core": "^19.0.0",\n "@angular/forms": "^19.0.0",\n "@angular/platform-browser": "^19.0.0",\n "@angular/platform-browser-dynamic": "^19.0.0",\n "@angular/router": "^19.0.0",\n "rxjs": "~7.8.0",\n "tslib": "^2.3.0",\n "zone.js": "~0.15.0"\n },\n "devDependencies": {\n "@angular-devkit/build-angular": "^19.0.0",\n "@angular/cli": "^19.0.0",\n "@angular/compiler-cli": "^19.0.0",\n "typescript": "~5.6.0"\n }\n}\n'); zip.file(folder+"angular.json",'{\n "$schema": "./node_modules/@angular/cli/lib/config/schema.json",\n "version": 1,\n "newProjectRoot": "projects",\n "projects": {\n "'+pn+'": {\n "projectType": "application",\n "root": "",\n "sourceRoot": "src",\n "prefix": "app",\n "architect": {\n "build": {\n "builder": "@angular-devkit/build-angular:application",\n "options": {\n "outputPath": "dist/'+pn+'",\n "index": "src/index.html",\n "browser": "src/main.ts",\n "tsConfig": "tsconfig.app.json",\n "styles": ["src/styles.css"],\n "scripts": []\n }\n },\n "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"}\n }\n }\n }\n}\n'); zip.file(folder+"tsconfig.json",'{\n "compileOnSave": false,\n "compilerOptions": {"baseUrl":"./","outDir":"./dist/out-tsc","forceConsistentCasingInFileNames":true,"strict":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":true,"noImplicitReturns":true,"noFallthroughCasesInSwitch":true,"paths":{"@/*":["src/*"]},"skipLibCheck":true,"esModuleInterop":true,"sourceMap":true,"declaration":false,"experimentalDecorators":true,"moduleResolution":"bundler","importHelpers":true,"target":"ES2022","module":"ES2022","useDefineForClassFields":false,"lib":["ES2022","dom"]},\n "references":[{"path":"./tsconfig.app.json"}]\n}\n'); zip.file(folder+"tsconfig.app.json",'{\n "extends":"./tsconfig.json",\n "compilerOptions":{"outDir":"./dist/out-tsc","types":[]},\n "files":["src/main.ts"],\n "include":["src/**/*.d.ts"]\n}\n'); zip.file(folder+"src/index.html","\n\n\n \n "+slugTitle(pn)+"\n \n \n \n\n\n \n\n\n"); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser';\nimport { appConfig } from './app/app.config';\nimport { AppComponent } from './app/app.component';\n\nbootstrapApplication(AppComponent, appConfig)\n .catch(err => console.error(err));\n"); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; }\nbody { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; }\n"); var hasComp=Object.keys(extracted).some(function(k){return k.indexOf("app.component")>=0;}); if(!hasComp){ zip.file(folder+"src/app/app.component.ts","import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'app-root',\n standalone: true,\n imports: [RouterOutlet],\n templateUrl: './app.component.html',\n styleUrl: './app.component.css'\n})\nexport class AppComponent {\n title = '"+pn+"';\n}\n"); zip.file(folder+"src/app/app.component.html","
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n \n
\n"); zip.file(folder+"src/app/app.component.css",".app-header{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px}h1{font-size:2.5rem;font-weight:700;color:#6366f1}\n"); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';\nimport { provideRouter } from '@angular/router';\nimport { routes } from './app.routes';\n\nexport const appConfig: ApplicationConfig = {\n providers: [\n provideZoneChangeDetection({ eventCoalescing: true }),\n provideRouter(routes)\n ]\n};\n"); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router';\n\nexport const routes: Routes = [];\n"); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nng serve\n# or: npm start\n\`\`\`\n\n## Build\n\`\`\`bash\nng build\n\`\`\`\n\nOpen in VS Code with Angular Language Service extension.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n.angular/\n"); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var reqMap={"numpy":"numpy","pandas":"pandas","sklearn":"scikit-learn","tensorflow":"tensorflow","torch":"torch","flask":"flask","fastapi":"fastapi","uvicorn":"uvicorn","requests":"requests","sqlalchemy":"sqlalchemy","pydantic":"pydantic","dotenv":"python-dotenv","PIL":"Pillow","cv2":"opencv-python","matplotlib":"matplotlib","seaborn":"seaborn","scipy":"scipy"}; var reqs=[]; Object.keys(reqMap).forEach(function(k){if(src.indexOf("import "+k)>=0||src.indexOf("from "+k)>=0)reqs.push(reqMap[k]);}); var reqsTxt=reqs.length?reqs.join("\n"):"# add dependencies here\n"; zip.file(folder+"main.py",src||"# "+title+"\n# Generated by PantheraHive BOS\n\nprint(title+\" loaded\")\n"); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n\`\`\`\n\n## Run\n\`\`\`bash\npython main.py\n\`\`\`\n"); zip.file(folder+".gitignore",".venv/\n__pycache__/\n*.pyc\n.env\n.DS_Store\n"); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/m,"").trim(); var depMap={"mongoose":"^8.0.0","dotenv":"^16.4.5","axios":"^1.7.9","cors":"^2.8.5","bcryptjs":"^2.4.3","jsonwebtoken":"^9.0.2","socket.io":"^4.7.4","uuid":"^9.0.1","zod":"^3.22.4","express":"^4.18.2"}; var deps={}; Object.keys(depMap).forEach(function(k){if(src.indexOf(k)>=0)deps[k]=depMap[k];}); if(!deps["express"])deps["express"]="^4.18.2"; var pkgJson=JSON.stringify({"name":pn,"version":"1.0.0","main":"src/index.js","scripts":{"start":"node src/index.js","dev":"nodemon src/index.js"},"dependencies":deps,"devDependencies":{"nodemon":"^3.0.3"}},null,2)+"\n"; zip.file(folder+"package.json",pkgJson); var fallback="const express=require(\"express\");\nconst app=express();\napp.use(express.json());\n\napp.get(\"/\",(req,res)=>{\n res.json({message:\""+title+" API\"});\n});\n\nconst PORT=process.env.PORT||3000;\napp.listen(PORT,()=>console.log(\"Server on port \"+PORT));\n"; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000\n"); zip.file(folder+".gitignore","node_modules/\n.env\n.DS_Store\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\n\`\`\`\n\n## Run\n\`\`\`bash\nnpm run dev\n\`\`\`\n"); } /* --- Vanilla HTML --- */ function buildVanillaHtml(zip,folder,app,code){ var title=slugTitle(app); var isFullDoc=code.trim().toLowerCase().indexOf("=0||code.trim().toLowerCase().indexOf("=0; var indexHtml=isFullDoc?code:"\n\n\n\n\n"+title+"\n\n\n\n"+code+"\n\n\n\n"; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e}\n"); zip.file(folder+"script.js","/* "+title+" — scripts */\n"); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Open\nDouble-click \`index.html\` in your browser.\n\nOr serve locally:\n\`\`\`bash\nnpx serve .\n# or\npython3 -m http.server 3000\n\`\`\`\n"); zip.file(folder+".gitignore",".DS_Store\nnode_modules/\n.env\n"); } /* ===== MAIN ===== */ var sc=document.createElement("script"); sc.src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"; sc.onerror=function(){ if(lbl)lbl.textContent="Download ZIP"; alert("JSZip load failed — check connection."); }; sc.onload=function(){ var zip=new JSZip(); var base=(_phFname||"output").replace(/\.[^.]+$/,""); var app=base.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"my_app"; var folder=app+"/"; var vc=document.getElementById("panel-content"); var panelTxt=vc?(vc.innerText||vc.textContent||""):""; var lang=detectLang(_phCode,panelTxt); if(_phIsHtml){ buildVanillaHtml(zip,folder,app,_phCode); } else if(lang==="flutter"){ buildFlutter(zip,folder,app,_phCode,panelTxt); } else if(lang==="react-native"){ buildReactNative(zip,folder,app,_phCode,panelTxt); } else if(lang==="swift"){ buildSwift(zip,folder,app,_phCode,panelTxt); } else if(lang==="kotlin"){ buildKotlin(zip,folder,app,_phCode,panelTxt); } else if(lang==="react"){ buildReact(zip,folder,app,_phCode,panelTxt); } else if(lang==="vue"){ buildVue(zip,folder,app,_phCode,panelTxt); } else if(lang==="angular"){ buildAngular(zip,folder,app,_phCode,panelTxt); } else if(lang==="python"){ buildPython(zip,folder,app,_phCode); } else if(lang==="node"){ buildNode(zip,folder,app,_phCode); } else { /* Document/content workflow */ var title=app.replace(/_/g," "); var md=_phAll||_phCode||panelTxt||"No content"; zip.file(folder+app+".md",md); var h=""+title+""; h+="

"+title+"

"; var hc=md.replace(/&/g,"&").replace(//g,">"); hc=hc.replace(/^### (.+)$/gm,"

$1

"); hc=hc.replace(/^## (.+)$/gm,"

$1

"); hc=hc.replace(/^# (.+)$/gm,"

$1

"); hc=hc.replace(/\*\*(.+?)\*\*/g,"$1"); hc=hc.replace(/\n{2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\nFiles:\n- "+app+".md (Markdown)\n- "+app+".html (styled HTML)\n"); } zip.generateAsync({type:"blob"}).then(function(blob){ var a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download=app+".zip"; a.click(); URL.revokeObjectURL(a.href); if(lbl)lbl.textContent="Download ZIP"; }); }; document.head.appendChild(sc); } function phShare(){navigator.clipboard.writeText(window.location.href).then(function(){var el=document.getElementById("ph-share-lbl");if(el){el.textContent="Link copied!";setTimeout(function(){el.textContent="Copy share link";},2500);}});}function phEmbed(){var runId=window.location.pathname.split("/").pop().replace(".html","");var embedUrl="https://pantherahive.com/embed/"+runId;var code='';navigator.clipboard.writeText(code).then(function(){var el=document.getElementById("ph-embed-lbl");if(el){el.textContent="Embed code copied!";setTimeout(function(){el.textContent="Get Embed Code";},2500);}});}