first pass of merging in warp (doesn't build)

This commit is contained in:
Ryan Ward
2026-07-01 16:08:58 -05:00
parent 2f64909469
commit 4770ac06b5
3662 changed files with 414574 additions and 89772 deletions
@@ -0,0 +1,49 @@
#[cfg(not(target_family = "wasm"))]
pub mod persistence;
use ai::document::AIDocumentId;
use cloud_objects::cloud_object::{
GenericCloudObject, GenericServerObject, ObjectType, ServerObjectModel,
};
use cloud_objects::ids::{ServerId, SyncId};
use serde::{Deserialize, Serialize};
/// Serialized representation of a notebook for sync queue
/// The AIDocumentID and ConversationID are stored here to avoid polluting the
/// generic CreateObjectRequest type.
#[derive(Serialize, Deserialize)]
pub struct SerializedNotebook {
pub data: String,
pub ai_document_id: Option<String>,
pub conversation_id: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq)]
pub struct CloudNotebookModel {
pub title: String,
pub data: String,
pub ai_document_id: Option<AIDocumentId>,
/// This is the server-generated conversation token, not the client-side AIConversationId.
pub conversation_id: Option<String>,
}
impl ServerObjectModel for CloudNotebookModel {
fn object_type(&self) -> ObjectType {
ObjectType::Notebook
}
}
/// This is the notebook_id in the database associated with this notebook.
#[derive(Clone, Copy, Default, Debug, PartialEq, Eq, Serialize, Deserialize, Hash)]
pub struct NotebookId(ServerId);
cloud_objects::server_id_traits! { NotebookId, "Notebook" }
impl From<NotebookId> for SyncId {
fn from(id: NotebookId) -> Self {
Self::ServerId(id.into())
}
}
/// `CloudNotebook` is a notebook retrieved from the server.
pub type CloudNotebook = GenericCloudObject<NotebookId, CloudNotebookModel>;
pub type ServerNotebook = GenericServerObject<NotebookId, CloudNotebookModel>;