Error Handling System
Run ID: 69b6fa04896970b08946498f2026-03-29Development
PantheraHive BOS
BOS Dashboard

Workflow Execution: "Error Handling System" (Category: Development)

Description: Test run

Topic: AI Technology

Execution Time: 5 min (+100 cr)


1. Workflow Overview and Purpose

This execution of the "Error Handling System" workflow focuses on establishing a robust framework for managing errors specifically within AI Technology contexts. Given the "Test run" description, this output serves as a foundational blueprint for designing, implementing, and continually improving an error handling system for AI-driven applications and models. Its primary purpose is to ensure system reliability, maintain data integrity, and facilitate rapid recovery and learning from operational anomalies.


2. Context: The Criticality of Error Handling in AI Technology

AI systems, by their very nature, introduce unique error vectors beyond traditional software. These include:

  • Data-centric errors: Bias, drift, corruption, incompleteness.
  • Model-centric errors: Underfitting/overfitting, concept drift, performance degradation, adversarial attacks, explainability failures.
  • Infrastructure & Deployment errors: Resource contention, scaling issues, deployment pipeline failures, MLOps orchestration errors.
  • Ethical & Societal errors: Unintended discriminatory outcomes, privacy breaches, misaligned objectives.

Effective error handling is paramount for maintaining trust, ensuring regulatory compliance, minimizing operational costs, and driving continuous improvement in AI systems.


3. Core Components of the AI Error Handling System

This section outlines the essential components required for a comprehensive error handling system tailored for AI Technology.

3.1. Error Identification and Classification

Objective: Proactive detection and structured categorization of errors.

  • Error Types (AI-Specific):

* Data Quality Errors: Input data drift, anomalies, corruption, missing values, schema mismatches.

* Model Performance Degradation: Accuracy drop, F1-score decline, increased false positives/negatives, latency spikes during inference.

* Concept Drift: Relationship between input and output changes over time, requiring model retraining.

* System & Infrastructure Errors: API failures, resource exhaustion (CPU/GPU/memory), network issues, database connection failures, MLOps pipeline failures.

* Ethical & Bias Errors: Detection of unfair outcomes, discriminatory predictions, or privacy violations.

* Adversarial Attacks: Detection of malicious inputs designed to mislead the model.

* Explainability Failures: Inability to provide justifiable reasoning for model predictions.

  • Severity Levels:

* Critical: System down, major data corruption, severe ethical breach, immediate financial/reputational damage.

* High: Significant performance degradation, service disruption, data integrity risk, potential regulatory non-compliance.

* Medium: Minor performance issues, intermittent failures, non-critical data anomalies.

* Low: Cosmetic issues, minor logging errors, non-impactful warnings.

  • Prioritization Matrix: Combine severity with impact (e.g., number of affected users, monetary loss, regulatory risk) and frequency to determine resolution priority.

3.2. Logging and Monitoring Framework

Objective: Real-time visibility into system health and error occurrences.

  • Key Metrics to Track:

* Model Metrics: Prediction accuracy, precision, recall, F1-score, AUC-ROC, RMSE, MAE, calibration scores, inference latency, throughput.

* Data Metrics: Input data distribution shifts, missing value rates, outlier detection, feature drift, data freshness.

* System Metrics: CPU/GPU utilization, memory usage, network I/O, disk space, API response times, error rates (HTTP 5xx).

* MLOps Pipeline Metrics: Training job success/failure rates, training duration, model deployment success rates, rollback counts.

  • Recommended Tools & Approaches:

* Centralized Logging: ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Datadog Logs.

* Metrics Collection & Monitoring: Prometheus, Grafana, Datadog, New Relic.

* Alerting: PagerDuty, Opsgenie, custom Slack/email integrations for critical alerts.

* Distributed Tracing: Jaeger, Zipkin for complex microservices architectures.

  • Automated Alerting: Configure thresholds for critical metrics to trigger immediate notifications to relevant teams.

3.3. Root Cause Analysis (RCA) Protocol

Objective: Systematically identify the underlying causes of errors to prevent recurrence.

  • RCA Steps:

1. Incident Detection & Triage: Identify, log, and classify the error.

2. Data Collection: Gather all relevant logs, metrics, model versions, data samples, and system configurations.

3. Hypothesis Generation: Propose potential causes (e.g., data drift, code bug, infrastructure issue).

4. Hypothesis Testing: Validate hypotheses using diagnostic tools, experiments, or further data analysis.

5. Root Cause Identification: Pinpoint the fundamental reason(s) for the error.

6. Solution Identification: Propose and evaluate corrective and preventive actions.

  • Techniques:

* 5 Whys: Iteratively ask "why" until the root cause is uncovered.

* Fishbone (Ishikawa) Diagram: Categorize potential causes (e.g., People, Process, Equipment, Environment, Materials, Measurement).

* Change Analysis: Compare system state before and after the error occurred.

3.4. Resolution and Recovery Strategies

Objective: Efficiently mitigate and resolve errors, restoring system functionality.

  • Automated Recovery:

* Rollbacks: Revert to previous stable model versions or code deployments.

* Restart Services: Automatically restart failed containers or services.

* Auto-scaling: Provision additional resources during load spikes.

* Data Sanitization: Automated scripts to clean or filter corrupted input data.

  • Manual Intervention:

* Incident Response Team: Dedicated team for investigating and resolving complex issues.

* Hotfixes: Rapid deployment of code patches.

* Model Retraining/Redeployment: Triggering a retraining pipeline with corrected data or updated algorithms.

* Data Engineering: Manual intervention for complex data corruption or migration.

  • Incident Management Integration: Integrate with existing IT Service Management (ITSM) tools (e.g., ServiceNow, Jira Service Management) for structured incident logging, tracking, and communication.

3.5. Prevention and Continuous Improvement

Objective: Proactively reduce error frequency and enhance the error handling system itself.

  • Pre-deployment Checks:

* Robust Testing: Unit, integration, end-to-end, and adversarial testing for AI models.

* Model Validation: Cross-validation, holdout validation, A/B testing, bias detection during development.

* Code Reviews & Static Analysis: Identify potential bugs and vulnerabilities.

* Infrastructure as Code (IaC) Validation: Ensure consistent and correct environment provisioning.

  • Post-deployment Monitoring: Continuous monitoring of all key metrics (as per 3.2).
  • Feedback Loop:

* Post-Mortems/Retrospectives: Conduct blameless post-mortems for critical incidents to identify lessons learned and implement preventive actions.

* Knowledge Base: Document all incidents, their root causes, and resolutions for future reference.

* Regular System Audits: Periodically review the error handling system's effectiveness and identify areas for improvement.

* Automated Testing of Error Handling: Ensure the error handling mechanisms themselves function correctly.


4. Actionable Recommendations for Implementation

To effectively implement this Error Handling System for AI Technology, consider a phased approach:

Phase 1: Setup & Baseline (Estimated: 2-4 weeks)

  1. Define Error Taxonomy: Formalize AI-specific error types, severity levels, and prioritization rules relevant to your specific AI applications.
  2. Implement Basic Logging: Ensure all AI services, models, and MLOps pipelines log critical events and errors to a centralized system (e.g., ELK Stack).
  3. Establish Core Monitoring: Set up dashboards and alerts for fundamental system health (CPU, memory, network) and basic model performance metrics (e.g., inference latency, error rates).
  4. Draft RCA Protocol: Create a simplified, standardized process for initial incident response and root cause analysis.
  5. Integrate with Incident Management: Link basic alerts to your existing incident management system.

Phase 2: Integration & Automation (Estimated: 4-8 weeks)

  1. Advanced AI-Specific Monitoring: Implement sophisticated monitoring for data drift, concept drift, model output distribution, and fairness metrics.
  2. Automated Alerting Refinement: Fine-tune alert thresholds, implement escalation policies, and reduce alert fatigue.
  3. Automated Recovery Mechanisms: Develop and test automated rollbacks for model versions and service restarts.
  4. Enhanced RCA Tools: Introduce tools like distributed tracing for microservices or specialized AI debugging platforms.
  5. Knowledge Base Development: Start documenting all incidents, resolutions, and lessons learned in a dedicated knowledge base.

Phase 3: Optimization & Learning (Ongoing)

  1. Predictive Error Detection: Explore using AI/ML to predict potential errors based on historical data patterns and system telemetry.
  2. Self-Healing AI Systems: Develop more complex automated recovery strategies, such as adaptive model retraining triggered by performance degradation.
  3. Regular Post-Mortems & Audits: Conduct blameless post-mortems for all critical incidents and periodically audit the error handling system's effectiveness.
  4. Feedback Loop Automation: Automate the feedback loop from incidents back into testing, development, and MLOps pipelines to prevent recurrence.
  5. Security & Adversarial Robustness: Integrate error handling with security measures to detect and respond to adversarial attacks or data breaches.

5. Structured Data: Key Monitoring Metrics Examples

The following table provides examples of key metrics that should be continuously monitored for AI systems:

| Metric Category | Example Metrics | Description | Threshold (Example) | Severity |

| :--------------------- | :---------------------------------------------- | :-------------------------------------------------------------------------- | :-------------------------- | :------- |

| Model Performance | Model Accuracy / F1-score | Measure of model correctness. | Drop > 5% vs. baseline | High |

| | Inference Latency (p95) | Time taken for 95% of predictions. | > 500ms | High |

| | Model Output Distribution Shift | Change in predicted class/value distribution. | Kullback-Leibler Divergence > 0.1 | Medium |

| Data Quality/Drift | Input Feature Drift (e.g., mean/std change) | Statistical change in input features over time. | Z-score > 3 | High |

| | Missing Value Rate | Percentage of missing values in critical input features. | > 1% | Medium |

| | Data Freshness (staleness) | Time since the last data update. | > 24 hours | High |

| System & Infra | API Error Rate (HTTP 5xx) | Percentage of server-side errors from AI service API. | > 0.5% | High |

| | CPU/GPU Utilization | Percentage of processing unit capacity in use. | > 90% (sustained for 5 min) | Medium |

| | MLOps Pipeline Failure Rate | Percentage of failed training/deployment jobs. | > 5% | High |

| Ethical/Bias | Fairness Metric (e.g., Equal Opportunity Diff) | Difference in true positive rates across protected groups. | > 0.05 | High |


6. Resource Allocation & Estimated Credits

The execution of this "Error Handling System" workflow as a conceptual "Test run" consumed the allocated resources:

  • Execution Time: 5 minutes
  • Credits Consumed: 100 cr

This resource allocation covers the generation of this comprehensive framework, leveraging PantheraHive's advanced AI capabilities to synthesize best practices and specific recommendations for AI-centric error handling.


7. Next Steps & Further Assistance

This output provides a robust foundation. To move forward, consider the following:

  1. Deep Dive into Specific AI Applications: Provide details on your specific AI models (e.g., NLP, Computer Vision, Recommender Systems) to tailor error handling even further.
  2. Tooling Selection: Based on your existing infrastructure and budget, a detailed recommendation for specific logging, monitoring, and alerting tools can be generated.
  3. Incident Response Playbooks: Develop detailed, step-by-step playbooks for common AI-related incidents.
  4. Training & Enablement: Plan for training your MLOps, Data Science, and Engineering teams on the new error handling protocols.

Please provide more specific details about your AI systems or any particular challenges you face, and I can generate more targeted and actionable follow-up workflows.

error_handling_system.md
Download as Markdown
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);}});}