Files
clawmates/crates/cm-domain/src/lib.rs
T
Omar SobhandClaude Opus 4.7 fbefc67878
ci / gates (push) Successful in 6s
ci / rust (push) Failing after 9s
ci / frontend (push) Successful in 25s
ci / e2e (push) Skipped
ci / publish (push) Skipped
slice 1: missions data model + migration
Introduce the unified `missions` tier that will replace the current
research_topics + loops split. This slice ships the data model +
backfill + skeleton REST surface; the old wizards keep working in
parallel until Slice 9's big-bang cutover.

Migration 0047 adds:
  - missions              (top-level workflow: template_kind + team +
                           schedule + status + config)
  - mission_phases        (ordered {research|coding|benchmark|
                           security_scan} phases per mission)
  - mission_tasks         (typed units of work, e.g. INT-XX cards,
                           UPSERT-keyed on (phase_id, external_id))
  - mission_artifacts     (MD/PDF/benchmark/security/diff files with
                           a pending queue for the PDF renderer worker)
  - benchmark_snapshots   (before/after pairs per iteration)

Backfill copies existing research_topics + loops rows into the new
tables as one-shot missions with the appropriate template_kind, so
Slice 2's UI can render the full history immediately.

New Rust surface:
  - cm_domain: MissionId, MissionPhaseId, MissionTaskId, MissionArtifactId
  - cm_db::repo::missions: Mission/MissionPhase/MissionTask/
    MissionArtifact structs + insert (txn-wrapped)/get/list/set_status/
    phases_for/set_phase_status/upsert_task/tasks_for/register_artifact/
    artifacts_for/next_pdf_pending/set_pdf_result
  - cm_api::routes::missions: skeleton list/create/get/set_status
    routes registered at /api/missions/*

Follow-up slices layer richer behavior (template dispatch, phase
execution, task parsing, artifact rendering) on this foundation.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
2026-07-19 11:40:51 -07:00

27 lines
876 B
Rust

//! Core domain types for the Clawmates platform (spec §14).
//!
//! This crate has no I/O: every other crate depends on it for identifiers,
//! the session-key codec, role/RBAC vocabulary, agent access policies, and
//! the fixed set of approval-gated action categories from spec §15.
mod access;
mod chat;
mod entities;
mod gated;
mod ids;
mod role;
mod session_key;
pub use access::{AccessPolicy, AgentScope, HumanScope};
pub use chat::{
shard_of, AgentRun, Message, MessageRole, MessageWithSteps, RunState, Session, Step, StepStatus,
};
pub use entities::{Agent, AgentStatus, FileDrive, FileNode, User, Workspace};
pub use gated::GatedCategory;
pub use ids::{
AgentId, MessageId, MissionArtifactId, MissionId, MissionPhaseId, MissionTaskId, NodeId,
SessionId, UserId, WorkspaceId,
};
pub use role::Role;
pub use session_key::{SessionKey, SessionKeyError};