Initial commit of HermesControl Android app

This commit is contained in:
Hy4ri committed 2026-06-16 00:00:36 +03:00
commit d6ff3de594
92 files changed
+10004

No files matched your search

@@ -0,0 +1,22 @@
package com.m57.hermescontrol.data.model
data class AchievementsResponse(
val achievements: List<Achievement>,
)
data class Achievement(
val id: String,
val name: String,
val description: String?,
val category: String?,
val kind: String?,
val icon: String?,
val unlocked: Boolean,
val discovered: Boolean,
val state: String?,
val tier: String?,
val progress: Double?,
val next_tier: String?,
val next_threshold: Double?,
val progress_pct: Double?,
)
@@ -0,0 +1,10 @@
package com.m57.hermescontrol.data.model
data class CronJob(
val id: String,
val name: String,
val schedule: String?,
val state: String?,
val last_run_status: String?,
val next_run: String?,
)
@@ -0,0 +1,43 @@
package com.m57.hermescontrol.data.model
data class ProfilesResponse(
val profiles: List<ProfileInfo>,
)
data class ProfileInfo(
val name: String,
val path: String?,
val is_default: Boolean?,
val model: String?,
val provider: String?,
val has_env: Boolean?,
val skill_count: Int?,
val gateway_running: Boolean?,
val description: String?,
)
data class ActiveProfileResponse(
val active: String,
val current: String?,
)
data class SetActiveProfileRequest(
val name: String,
)
data class ProfileSoulResponse(
val content: String,
)
data class UpdateProfileSoulRequest(
val content: String,
)
data class UpdateProfileModelRequest(
val provider: String,
val model: String,
)
data class UpdateProfileDescriptionRequest(
val description: String,
)
@@ -0,0 +1,13 @@
package com.m57.hermescontrol.data.model
data class SessionListResponse(
val sessions: List<SessionInfo>,
)
data class SessionInfo(
val id: String,
val title: String?,
val created_at: String?,
val message_count: Int?,
val status: String?,
)
@@ -0,0 +1,12 @@
package com.m57.hermescontrol.data.model
data class SessionMessagesResponse(
val messages: List<SessionMessage>,
)
data class SessionMessage(
val role: String?,
val content: String?,
val timestamp: String?,
val type: String?,
)
@@ -0,0 +1,8 @@
package com.m57.hermescontrol.data.model
data class Skill(
val name: String,
val description: String?,
val category: String?,
val enabled: Boolean,
)
@@ -0,0 +1,14 @@
package com.m57.hermescontrol.data.model
data class StatusResponse(
val version: String?,
val gateway_running: Boolean?,
val active_sessions: Int?,
val auth_required: Boolean?,
val gateway_platforms: Map<String, PlatformStatus>?,
)
data class PlatformStatus(
val state: String?,
val error_code: String? = null,
)
@@ -0,0 +1,24 @@
package com.m57.hermescontrol.data.model
/**
* Wrapper around the /api/system/stats response.
*
* The payload shape can change across Hermes versions, so we keep it
* flexible with a Map and provide convenience accessors for the
* most commonly used fields.
*/
data class SystemStatsResponse(
val cpu: Map<String, Any?>? = null,
val memory: Map<String, Any?>? = null,
val disk: Map<String, Any?>? = null,
val uptime: Any? = null,
val extra: Map<String, Any?>? = null,
) {
/** CPU usage percentage, if available. */
val cpuPercent: Double?
get() = (cpu?.get("percent") as? Number)?.toDouble()
/** Memory usage percentage, if available. */
val memoryPercent: Double?
get() = (memory?.get("percent") as? Number)?.toDouble()
}
@@ -0,0 +1,6 @@
package com.m57.hermescontrol.data.model
data class ToggleSkillRequest(
val name: String,
val enabled: Boolean,
)
@@ -0,0 +1,16 @@
package com.m57.hermescontrol.data.model
data class Toolset(
val name: String,
val label: String?,
val description: String?,
val enabled: Boolean,
val available: Boolean?,
val configured: Boolean?,
val tools: List<String>?,
)
data class ToolsetToggleRequest(
val enabled: Boolean,
val profile: String? = null,
)