- Overview
- Core Modules
- Utility Modules
- Security Modules
- Feature Modules
- IPC Communication
- Error Codes
- Examples
The Self-Building Desktop Application provides a comprehensive API for AI-powered code generation, project management, and development automation. This documentation covers all public APIs, their usage, and best practices.
{
apiKey: 'your-anthropic-api-key',
apiEndpoint: 'https://api.anthropic.com',
dataPath: './data',
logsPath: './logs',
maxRetries: 3,
timeout: 30000
}Sets the Anthropic API key for code generation.
Parameters:
apiKey(string, required): The Anthropic API key
Returns:
{
success: boolean,
error?: string
}Example:
await window.electronAPI.setApiKey('sk-ant-...');Generates code from a natural language prompt.
Parameters:
prompt(string, required): Natural language description (max 10,000 chars)
Returns:
{
success: boolean,
data?: {
packages: string[],
code: string,
description: string
},
metadata?: {
processingTime: number,
retryCount: number,
enhanced: boolean,
fromCache?: boolean
},
error?: string
}Example:
const result = await window.electronAPI.generateCode('Create a todo list app');Executes generated code in a sandboxed Node.js environment.
Parameters:
code(string, required): JavaScript code to executepackages(string[], optional): NPM packages to installsessionId(string, required): Session identifier
Returns:
{
success: boolean,
output?: string,
errors?: string,
exitCode?: number
}Example:
await window.electronAPI.executeCode({
code: 'console.log("Hello World")',
packages: ['lodash'],
sessionId: 'session_123_abc'
});Executes DOM-based code in the renderer process.
Parameters:
code(string, required): DOM manipulation codesessionId(string, required): Session identifier
Returns:
{
success: boolean,
output?: string,
logs?: Array<{type: string, message: string, timestamp: number}>
}Creates a new session for tracking code generation and execution.
Parameters:
sessionId(string, required): Unique session identifierprompt(string, optional): Initial prompt for the session
Returns:
{
success: boolean,
session?: {
id: string,
created: string,
status: string,
metadata: object
}
}Retrieves session information.
Parameters:
sessionId(string, required): Session identifier
Returns:
{
success: boolean,
session?: SessionObject
}Gets recent session history.
Parameters:
limit(number, optional): Maximum number of sessions (1-100, default: 20)
Returns:
{
success: boolean,
history?: Array<SessionSummary>
}Gets aggregated session statistics.
Parameters: None
Returns:
{
success: boolean,
stats?: {
totalSessions: number,
totalExecutions: number,
successfulExecutions: number,
averageCodeLength: number,
statusDistribution: object,
recentActivity: number
}
}Cleans up a session and its temporary files.
Parameters:
sessionId(string, required): Session identifier
Returns:
{
success: boolean,
error?: string
}Exports all sessions for backup.
Parameters: None
Returns:
{
success: boolean,
data?: {
exported: string,
version: string,
sessions: Array<SessionObject>
}
}Retrieves current application configuration.
Parameters: None
Returns:
{
success: boolean,
config?: ConfigObject
}Updates application configuration.
Parameters:
config(object, required): Configuration updates
Returns:
{
success: boolean,
config?: ConfigObject,
error?: string
}Example:
await window.electronAPI.updateConfig({
execution: {
maxConcurrentExecutions: 5,
executionTimeout: 60000
}
});Scans code for security issues before execution.
Parameters:
code(string, required): Code to scan
Returns:
{
success: boolean,
scan?: {
safe: boolean,
issues: Array<{
type: string,
severity: string,
description: string
}>,
riskLevel: string
}
}Opens file dialog to select API key file.
Parameters: None
Returns:
{
success: boolean,
apiKey?: string,
error?: string
}Gets current system health metrics.
Parameters: None
Returns:
{
success: boolean,
health?: {
cpu: { usage: number, status: string },
memory: { total: number, used: number, free: number, usage: number, status: string },
disk: { total: number, used: number, free: number, usage: number, status: string }
},
stats?: ExecutionStats
}Gets list of currently active sessions.
Parameters: None
Returns:
{
success: boolean,
sessions?: Array<{
id: string,
startTime: number,
packages: string[],
codeLength: number,
duration: number
}>
}Checks for application updates.
Parameters: None
Returns:
{
success: boolean,
result?: UpdateInfo,
error?: string
}Gets cache performance statistics.
Parameters: None
Returns:
{
success: boolean,
stats?: {
size: number,
maxSize: number,
hitRate: string,
hits: number,
misses: number,
evictions: number,
totalRequests: number,
config: object
}
}Clears the code generation cache.
Parameters: None
Returns:
{
success: boolean,
error?: string
}Updates cache configuration.
Parameters:
config(object, required): Cache configuration
Returns:
{
success: boolean,
config?: CacheConfig,
error?: string
}Submits user feedback for a session.
Parameters:
feedback(object, required):sessionId(string, required): Session identifierrating(string, required): 'good' or 'bad'prompt(string, optional): Original prompttimestamp(number, optional): Timestamp
Returns:
{
success: boolean,
error?: string
}All IPC endpoints follow a consistent error handling pattern:
- Success Response:
{
success: true,
// ... endpoint-specific data
}- Error Response:
{
success: false,
error: "Error message",
details?: ["Validation error 1", "Validation error 2"]
}Some endpoints have rate limiting to prevent abuse:
generate-code: 10 requests per minuteexecute-code: 20 requests per minutescan-code-security: 30 requests per minute
When rate limit is exceeded:
{
success: false,
error: "Rate limit exceeded. Please try again later."
}- Input Validation: All inputs are validated and sanitized
- Session IDs: Must match pattern
session_\d+_[a-z0-9]+ - Code Length: Maximum 100,000 characters
- Prompt Length: Maximum 10,000 characters
- Package Filtering: Dangerous packages are blocked
// Complete workflow example
async function generateAndExecute() {
// Set API key
await window.electronAPI.setApiKey('your-api-key');
// Create session
const sessionId = window.electronAPI.generateSessionId();
await window.electronAPI.createSession(sessionId, 'Create a calculator');
// Generate code
const generated = await window.electronAPI.generateCode('Create a calculator');
if (generated.success) {
// Scan for security issues
const scan = await window.electronAPI.scanCodeSecurity(generated.data.code);
if (scan.scan.safe) {
// Execute code
const result = await window.electronAPI.executeCode({
code: generated.data.code,
packages: generated.data.packages,
sessionId: sessionId
});
console.log('Execution result:', result);
}
}
// Cleanup
await window.electronAPI.cleanupSession(sessionId);
}