feat: Add API key authentication for backup tool
- Add get_api_key() and require_api_key() to auth.py - Add generic key-value settings storage to SettingsStore - Add test_api_key_auth to verify the implementation - Uses secrets.compare_digest for timing-safe comparison - Auto-generates API key on first use and stores in settings DB
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,127 @@
|
||||
{
|
||||
"nextId": 1,
|
||||
"settings": {
|
||||
"globalPause": false,
|
||||
"enginePaused": false,
|
||||
"maxConcurrent": 2,
|
||||
"maxTriageConcurrent": 2,
|
||||
"globalMaxConcurrent": 4,
|
||||
"maxWorktrees": 4,
|
||||
"pollIntervalMs": 15000,
|
||||
"heartbeatMultiplier": 1,
|
||||
"groupOverlappingFiles": true,
|
||||
"overlapIgnorePaths": [],
|
||||
"autoMerge": true,
|
||||
"mergeStrategy": "direct",
|
||||
"requirePrApproval": false,
|
||||
"pushAfterMerge": false,
|
||||
"pushRemote": "origin",
|
||||
"unavailableNodePolicy": "block",
|
||||
"recycleWorktrees": false,
|
||||
"worktreeNaming": "random",
|
||||
"taskPrefix": "FN",
|
||||
"includeTaskIdInCommit": true,
|
||||
"commitAuthorEnabled": true,
|
||||
"commitAuthorName": "Fusion",
|
||||
"commitAuthorEmail": "noreply@runfusion.ai",
|
||||
"modelPresets": [],
|
||||
"autoSelectModelPreset": false,
|
||||
"completionDocumentationMode": "off",
|
||||
"defaultPresetBySize": {},
|
||||
"autoResolveConflicts": true,
|
||||
"smartConflictResolution": true,
|
||||
"mergerAutostashMaxAgeHours": 24,
|
||||
"worktreeRebaseBeforeMerge": true,
|
||||
"worktreeRebaseRemote": "",
|
||||
"worktreeRebaseLocalBase": true,
|
||||
"mergeConflictStrategy": "smart-prefer-main",
|
||||
"workflowStepTimeoutMs": 360000,
|
||||
"strictScopeEnforcement": false,
|
||||
"buildRetryCount": 0,
|
||||
"verificationFixRetries": 3,
|
||||
"buildTimeoutMs": 300000,
|
||||
"requirePlanApproval": false,
|
||||
"specStalenessEnabled": false,
|
||||
"specStalenessMaxAgeMs": 21600000,
|
||||
"aiSessionTtlMs": 604800000,
|
||||
"aiSessionCleanupIntervalMs": 3600000,
|
||||
"autoUnpauseEnabled": true,
|
||||
"autoUnpauseBaseDelayMs": 300000,
|
||||
"autoUnpauseMaxDelayMs": 3600000,
|
||||
"maxStuckKills": 6,
|
||||
"preserveProgressOnStuckRequeue": true,
|
||||
"maxPostReviewFixes": 1,
|
||||
"maxSpawnedAgentsPerParent": 5,
|
||||
"maxSpawnedAgentsGlobal": 20,
|
||||
"maintenanceIntervalMs": 300000,
|
||||
"autoArchiveDoneTasksEnabled": true,
|
||||
"autoArchiveDoneAfterMs": 172800000,
|
||||
"archiveAgentLogMode": "compact",
|
||||
"autoUpdatePrStatus": false,
|
||||
"githubCommentOnDone": false,
|
||||
"githubTrackingEnabledByDefault": false,
|
||||
"githubAuthMode": "gh-cli",
|
||||
"autoBackupEnabled": false,
|
||||
"autoBackupSchedule": "0 2 * * *",
|
||||
"autoBackupRetention": 7,
|
||||
"autoBackupDir": ".fusion/backups",
|
||||
"memoryBackupEnabled": false,
|
||||
"memoryBackupSchedule": "0 3 * * *",
|
||||
"memoryBackupRetention": 14,
|
||||
"memoryBackupDir": ".fusion/backups/memory",
|
||||
"memoryBackupScope": "all",
|
||||
"autoSummarizeTitles": false,
|
||||
"useAiMergeCommitSummary": true,
|
||||
"insightExtractionEnabled": false,
|
||||
"insightExtractionSchedule": "0 2 * * *",
|
||||
"insightExtractionMinIntervalMs": 86400000,
|
||||
"taskEvaluationEnabled": false,
|
||||
"taskEvaluationSchedule": "0 5 * * *",
|
||||
"taskEvaluationFollowUpPolicy": "off",
|
||||
"memoryEnabled": true,
|
||||
"memoryBackendType": "qmd",
|
||||
"memoryAutoSummarizeEnabled": false,
|
||||
"memoryAutoSummarizeThresholdChars": 50000,
|
||||
"memoryAutoSummarizeSchedule": "0 3 * * *",
|
||||
"memoryDreamsEnabled": false,
|
||||
"memoryDreamsSchedule": "0 4 * * *",
|
||||
"runStepsInNewSessions": false,
|
||||
"maxParallelSteps": 2,
|
||||
"missionStaleThresholdMs": 600000,
|
||||
"missionMaxTaskRetries": 3,
|
||||
"missionHealthCheckIntervalMs": 300000,
|
||||
"reflectionEnabled": false,
|
||||
"reflectionIntervalMs": 3600000,
|
||||
"reflectionAfterTask": true,
|
||||
"reviewHandoffPolicy": "disabled",
|
||||
"showQuickChatFAB": false,
|
||||
"researchSettings": {
|
||||
"enabled": true,
|
||||
"enabledSources": {
|
||||
"webSearch": true,
|
||||
"pageFetch": true,
|
||||
"github": false,
|
||||
"localDocs": true,
|
||||
"llmSynthesis": true
|
||||
},
|
||||
"limits": {
|
||||
"maxConcurrentRuns": 3,
|
||||
"maxSourcesPerRun": 20,
|
||||
"maxDurationMs": 300000,
|
||||
"requestTimeoutMs": 30000
|
||||
}
|
||||
},
|
||||
"evalSettings": {
|
||||
"enabled": false,
|
||||
"intervalMs": 86400000,
|
||||
"followUpPolicy": "suggest-only",
|
||||
"retentionDays": 30
|
||||
},
|
||||
"researchEnabled": true,
|
||||
"researchMaxConcurrentRuns": 3,
|
||||
"researchDefaultTimeout": 300000,
|
||||
"researchMaxSourcesPerRun": 20,
|
||||
"researchMaxSynthesisRounds": 2,
|
||||
"globalPauseReason": "manual"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
# Daily Memory 2026-05-11
|
||||
|
||||
<!-- Append running observations, open loops, and day-to-day notes here. Promote evergreen facts to MEMORY.md. -->
|
||||
@@ -0,0 +1,3 @@
|
||||
# Memory Dreams
|
||||
|
||||
<!-- Periodic synthesized patterns from daily notes. Promote durable lessons to MEMORY.md. -->
|
||||
@@ -0,0 +1,19 @@
|
||||
# Project Memory
|
||||
|
||||
<!-- This file stores durable project learnings. Agents consult and update it during triage and execution. -->
|
||||
|
||||
## Architecture
|
||||
|
||||
<!-- Key architectural patterns, module boundaries, and design decisions -->
|
||||
|
||||
## Conventions
|
||||
|
||||
<!-- Project-specific coding standards, naming patterns, file organization -->
|
||||
|
||||
## Pitfalls
|
||||
|
||||
<!-- Known issues, common mistakes, and things to avoid -->
|
||||
|
||||
## Context
|
||||
|
||||
<!-- Important background information, dependency constraints, deployment notes -->
|
||||
Reference in New Issue
Block a user