Fix import paths and remove organ metaphors
Some checks failed
DSS Project Analysis / dss-context-update (push) Has been cancelled

- Update all `from storage.` imports to `from dss.storage.`
- Update `from config import config` to use `dss.settings`
- Update `from auth.` imports to `from dss.auth.`
- Update health check to use `dss.mcp.handler`
- Fix SmartMerger import (merger.py not smart_merger.py)
- Fix TranslationDictionary import path
- Fix test assertion for networkx edges/links
- Remove organ/body metaphors from:
  - API server health check
  - CLI status command and help text
  - Admin UI logger and error handler

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-10 13:05:00 -03:00
parent 41fba59bf7
commit faa19beef3
22 changed files with 251 additions and 295 deletions

View File

@@ -1,147 +1,139 @@
/**
* DSS Error Handler - Immune System Antibodies
* DSS Error Handler
*
* The DSS Component's immune system uses these antibodies to detect and report threats.
* Converts technical errors into human-friendly, actionable treatment plans.
* Converts technical errors into user-friendly, actionable messages.
* Integrates with the messaging system for structured error reporting.
*
* Biological Framework: These error messages use component metaphors to make
* issues intuitive. See docs/DSS_ORGANISM_GUIDE.md for the full framework.
*
* @module error-handler
*/
import { notifyError, ErrorCode } from './messaging.js';
/**
* Error message templates with component metaphors
*
* These messages use biological language from the DSS Component Framework.
* Each error is framed as a symptom the immune system detected, with
* a diagnosis and treatment plan.
* Error message templates with user-friendly descriptions
*/
const errorMessages = {
// Figma API Errors - Sensory System Issues
// Figma API Errors
figma_403: {
title: '🛡️ IMMUNE ALERT: Sensory Input Blocked',
message: 'The DSS sensory organs cannot perceive the Figma file. Your access credentials lack permission.',
title: 'Access Denied',
message: 'Cannot access the Figma file. Your access credentials lack permission.',
actions: [
'Verify your Figma authentication token in Settings (nervous system communication)',
'Confirm you have access to this file in Figma (sensory perception)',
'Check if the file still exists (component awareness)',
'Verify your Figma authentication token in Settings',
'Confirm you have access to this file in Figma',
'Check if the file still exists',
],
code: ErrorCode.FIGMA_API_ERROR,
},
figma_404: {
title: '🛡️ IMMUNE ALERT: Sensory Target Lost',
message: 'The Figma file the DSS sensory organs were trying to perceive doesn\'t exist or is inaccessible.',
title: 'File Not Found',
message: 'The Figma file doesn\'t exist or is inaccessible.',
actions: [
'Double-check your Figma file key in Settings (sensory focus)',
'Double-check your Figma file key in Settings',
'Verify the file hasn\'t been deleted in Figma',
'Confirm you have access to the file in Figma (sensory perception)',
'Confirm you have access to the file in Figma',
],
code: ErrorCode.FIGMA_API_ERROR,
},
figma_401: {
title: '🔌 NERVOUS SYSTEM ALERT: Authentication Expired',
message: 'The DSS nervous system\'s authentication with Figma has failed. Your sensory input token is invalid or expired.',
title: 'Authentication Failed',
message: 'Figma authentication failed. Your access token is invalid or expired.',
actions: [
'Refresh your Figma authentication token in Settings (nervous system repair)',
'Get a fresh token from figma.com/settings (Account Personal Access Tokens)',
'Refresh your Figma authentication token in Settings',
'Get a fresh token from figma.com/settings (Account -> Personal Access Tokens)',
'Ensure you copied the full token without truncation',
],
code: ErrorCode.FIGMA_CONNECTION_FAILED,
},
figma_429: {
title: '⚡ METABOLISM ALERT: Sensory Overload',
message: 'The DSS is sensing too quickly. Figma\'s rate limits have been triggered.',
title: 'Rate Limit Exceeded',
message: 'Too many requests. Figma\'s rate limits have been triggered.',
actions: [
'Let the component rest for 1-2 minutes before sensing again',
'Reduce how frequently the sensory system extracts data',
'Wait 1-2 minutes before trying again',
'Reduce how frequently you extract data',
],
code: ErrorCode.FIGMA_API_ERROR,
},
figma_500: {
title: '🔌 EXTERNAL SYSTEM ALERT: Figma Component Stressed',
message: 'Figma\'s servers are experiencing stress. This is external to DSS.',
title: 'Figma Server Error',
message: 'Figma\'s servers are experiencing issues. This is external to DSS.',
actions: [
'Wait while the external component recovers',
'Check Figma health: status.figma.com',
'Wait and try again later',
'Check Figma status: status.figma.com',
],
code: ErrorCode.FIGMA_API_ERROR,
},
figma_demo: {
title: '🛡️ IMMUNE ALERT: Invalid Sensory Configuration',
message: 'The sensory organs are configured to look at "demo" which doesn\'t exist in Figma.',
title: 'Invalid Configuration',
message: 'The Figma file key is configured to "demo" which doesn\'t exist in Figma.',
actions: [
'Update Settings with your real Figma file key (configure sensory input)',
'Update Settings with your real Figma file key',
'Find your file key in the Figma URL: figma.com/file/[FILE_KEY]/...',
'Use the Figma file selector in Settings',
],
code: ErrorCode.FIGMA_INVALID_KEY,
},
// API Connection Errors - Nervous System / Heart Issues
// API Connection Errors
api_network: {
title: '❤️ CRITICAL: Heart Not Responding',
message: 'The DSS nervous system cannot reach the heart (server). The component is not responding.',
title: 'Server Not Responding',
message: 'Cannot connect to the DSS server.',
actions: [
'Verify the heart is beating: curl http://localhost:3456/health',
'Restart the heart: cd tools/api && python3 -m uvicorn server:app --port 3456',
'Check your network connection to the component',
'Verify the server is running: curl http://localhost:3456/health',
'Restart the server: ./scripts/dss start',
'Check your network connection',
],
code: ErrorCode.SYSTEM_NETWORK,
},
api_timeout: {
title: '⚡ METABOLISM ALERT: Component Overloaded',
message: 'The DSS component took too long to respond. The heart may be stressed or metabolism sluggish.',
title: 'Request Timeout',
message: 'The server took too long to respond.',
actions: [
'Let the component rest and try again shortly',
'Check the heart\'s logs for signs of stress: tail -f /tmp/dss-demo.log',
'Reduce metabolic load (try processing smaller batches)',
'Try again in a few moments',
'Check the server logs: ./scripts/dss logs',
'Try processing smaller batches',
],
code: ErrorCode.API_TIMEOUT,
},
api_500: {
title: '🧠 BRAIN ALERT: Critical Processing Error',
message: 'The DSS brain encountered a fatal error while processing your request.',
title: 'Server Error',
message: 'The server encountered an error while processing your request.',
actions: [
'Examine the brain\'s thoughts in the logs: tail -f /tmp/dss-demo.log',
'Retry the operation to see if it recovers',
'Report the issue if the component keeps failing',
'Check the server logs: ./scripts/dss logs',
'Retry the operation',
'Report the issue if it persists',
],
code: ErrorCode.API_SERVER_ERROR,
},
// Validation Errors - Immune System / Genetics
// Validation Errors
validation_missing_field: {
title: '🛡️ IMMUNE ALERT: DNA Incomplete',
message: 'The genetic code (configuration) is missing essential information. The component cannot proceed.',
title: 'Missing Required Field',
message: 'The configuration is missing required information.',
actions: [
'Fill in all fields marked as required (complete the genetic code)',
'Fill in all fields marked as required',
'Ensure each input field contains valid information',
],
code: ErrorCode.VALIDATION_MISSING_FIELD,
},
validation_invalid_format: {
title: '🛡️ IMMUNE ALERT: Genetic Mutation Detected',
message: 'One or more genetic sequences (configuration values) have an invalid format.',
title: 'Invalid Format',
message: 'One or more configuration values have an invalid format.',
actions: [
'Verify URLs start with http:// or https:// (correct genetic sequence)',
'Check email addresses follow standard format (valid genetic code)',
'Ensure file keys contain only letters, numbers, and hyphens (genetic pattern match)',
'Verify URLs start with http:// or https://',
'Check email addresses follow standard format',
'Ensure file keys contain only letters, numbers, and hyphens',
],
code: ErrorCode.VALIDATION_INVALID_FORMAT,
},
// Generic fallback
unknown: {
title: '🧬 ORGANISM ALERT: Unexplained Symptom',
message: 'The DSS component experienced an unexpected problem. The root cause is unclear.',
title: 'Unexpected Error',
message: 'An unexpected problem occurred.',
actions: [
'Try the operation again (component may self-heal)',
'Refresh if the issue persists (restart vitals)',
'Check browser console for clues about the component\'s condition',
'Try the operation again',
'Refresh the page if the issue persists',
'Check browser console for details',
],
code: ErrorCode.SYSTEM_UNEXPECTED,
},
@@ -253,7 +245,7 @@ export function handleError(error, context = {}) {
});
// Log full details to console for debugging
console.group(`🔴 ${parsed.title}`);
console.group(`[ERROR] ${parsed.title}`);
console.log('Message:', parsed.message);
if (parsed.actions) {
console.log('Actions:', parsed.actions);
@@ -281,23 +273,23 @@ export async function tryWithErrorHandling(fn, context = {}) {
}
/**
* Get user-friendly HTTP status message using component metaphors
* Get user-friendly HTTP status message
* @param {number} status - HTTP status code
* @returns {string} User-friendly message with biological context
* @returns {string} User-friendly message
*/
export function getStatusMessage(status) {
const messages = {
400: '🛡️ Genetic Code Invalid - the DNA sequence doesn\'t compile',
401: '🔐 Authentication Failed - the nervous system can\'t verify identity',
403: '🚫 Access Forbidden - immune system rejected this component',
404: '👻 Target Lost - sensory organs can\'t perceive the resource',
429: '⚡ Metabolism Overloaded - component sensing too quickly',
500: '🧠 Brain Error - critical neural processing failure',
502: '💀 Component Unresponsive - the heart has stopped beating',
503: '🏥 Component In Recovery - temporarily unable to metabolize requests',
400: 'Bad Request - invalid input data',
401: 'Authentication Failed - invalid credentials',
403: 'Access Forbidden - permission denied',
404: 'Not Found - resource doesn\'t exist',
429: 'Rate Limited - too many requests',
500: 'Server Error - internal processing failure',
502: 'Bad Gateway - server not responding',
503: 'Service Unavailable - temporarily unable to handle requests',
};
return messages[status] || `🔴 Unknown Component State - HTTP ${status}`;
return messages[status] || `Unknown Error - HTTP ${status}`;
}
export default {