Files
luma/Sources/LumaCore/Models/Mission/MissionFinding.swift
Ole André Vadla Ravnås 5d0748515b mission: Add goal-driven agent loop
LLM agent for user-stated RE goals: propose-and-approve over the
existing RPC, evidence-grounded findings, collab via the op-outbox
pattern. Anthropic / OpenAI / local-OAI providers. r2ai used for
explain_function when the plugin is loaded; falls back to the
mission's own provider otherwise.
2026-05-09 12:54:14 +02:00

56 lines
1.6 KiB
Swift

import Foundation
import GRDB
public struct MissionFinding: Codable, Identifiable, Sendable, FetchableRecord, PersistableRecord {
public static let databaseTableName = "mission_finding"
public var id: UUID
public var missionID: UUID
public var createdAt: Date
public var title: String
public var bodyMarkdown: String
public var confidence: MissionFindingConfidence
public var kind: String
public var status: MissionFindingStatus
public var sessionID: UUID?
public var anchorJSON: String?
public var pinnedInsightID: UUID?
enum CodingKeys: String, CodingKey {
case id
case missionID = "mission_id"
case createdAt = "created_at"
case title
case bodyMarkdown = "body_markdown"
case confidence
case kind
case status
case sessionID = "session_id"
case anchorJSON = "anchor_json"
case pinnedInsightID = "pinned_insight_id"
}
public init(
id: UUID = UUID(),
missionID: UUID,
title: String,
bodyMarkdown: String,
confidence: MissionFindingConfidence,
kind: String,
sessionID: UUID? = nil,
anchorJSON: String? = nil
) {
self.id = id
self.missionID = missionID
self.createdAt = Date()
self.title = title
self.bodyMarkdown = bodyMarkdown
self.confidence = confidence
self.kind = kind
self.status = .proposed
self.sessionID = sessionID
self.anchorJSON = anchorJSON
self.pinnedInsightID = nil
}
}