Initial import of LogDarioSeq baseline
Establishes version control for the personal Logseq DB fork before starting the server-client architecture migration and domain features described in docs/agent-guide and the approved implementation plan. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
46
cli/spec/runtime/auth_state.mli
Normal file
46
cli/spec/runtime/auth_state.mli
Normal file
@@ -0,0 +1,46 @@
|
||||
type auth_data = {
|
||||
provider : string;
|
||||
id_token : string option;
|
||||
access_token : string option;
|
||||
refresh_token : string option;
|
||||
expires_at : Time.date option;
|
||||
sub : string option;
|
||||
email : Cli_primitive.email option;
|
||||
updated_at : Time.date;
|
||||
}
|
||||
|
||||
type login_result = {
|
||||
auth_path : Cli_primitive.path;
|
||||
authorize_url : Cli_primitive.url;
|
||||
opened : bool;
|
||||
email : Cli_primitive.email option;
|
||||
sub : string option;
|
||||
updated_at : Time.date;
|
||||
}
|
||||
|
||||
type logout_result = {
|
||||
auth_path : Cli_primitive.path;
|
||||
deleted : bool;
|
||||
logout_url : Cli_primitive.url;
|
||||
opened : bool;
|
||||
logout_completed : bool;
|
||||
}
|
||||
|
||||
val default_auth_path : unit -> Cli_primitive.path
|
||||
val auth_path : Cli_config.t -> Cli_primitive.path
|
||||
|
||||
val read_auth_file :
|
||||
Cli_config.t -> auth_data option Error.build_result Cli_effect.t
|
||||
|
||||
val write_auth_file :
|
||||
Cli_config.t -> auth_data -> auth_data Error.build_result Cli_effect.t
|
||||
|
||||
val delete_auth_file : Cli_config.t -> unit Error.build_result Cli_effect.t
|
||||
val expired_auth : auth_data -> bool
|
||||
|
||||
val refresh_auth :
|
||||
Cli_config.t -> auth_data -> auth_data Error.build_result Cli_effect.t
|
||||
|
||||
val resolve_auth : Cli_config.t -> auth_data Error.build_result Cli_effect.t
|
||||
val login : Cli_config.t -> login_result Error.build_result Cli_effect.t
|
||||
val logout : Cli_config.t -> logout_result Error.build_result Cli_effect.t
|
||||
74
cli/spec/runtime/server_runtime.mli
Normal file
74
cli/spec/runtime/server_runtime.mli
Normal file
@@ -0,0 +1,74 @@
|
||||
type server_status = Starting | Ready | Error | Unknown
|
||||
|
||||
type server = {
|
||||
repo : Cli_primitive.repo;
|
||||
graph : Cli_primitive.graph option;
|
||||
pid : Cli_primitive.pid;
|
||||
host : string;
|
||||
port : Cli_primitive.port;
|
||||
base_url : Cli_primitive.url;
|
||||
status : server_status;
|
||||
revision : string option;
|
||||
root_dir : Cli_primitive.path option;
|
||||
owner_source : Cli_primitive.owner_source;
|
||||
owned : bool;
|
||||
raw : Melange_edn_melange.any option;
|
||||
}
|
||||
|
||||
type start_result = {
|
||||
repo : Cli_primitive.repo;
|
||||
owner_source : Cli_primitive.owner_source;
|
||||
owned : bool;
|
||||
}
|
||||
|
||||
type stop_result = { repo : Cli_primitive.repo }
|
||||
type revision_mismatch = { cli_revision : string; servers : server Rrbvec.t }
|
||||
|
||||
type cleanup_result = {
|
||||
cli_revision : string;
|
||||
checked : int;
|
||||
mismatched : int;
|
||||
eligible : int;
|
||||
skipped_owner : int;
|
||||
killed : server Rrbvec.t;
|
||||
failed : (server * Error.t) Rrbvec.t;
|
||||
}
|
||||
|
||||
val resolve_root_dir : Cli_config.t -> Cli_primitive.path
|
||||
val graphs_dir : Cli_config.t -> Cli_primitive.path
|
||||
|
||||
val lock_path :
|
||||
root_dir:Cli_primitive.path -> Cli_primitive.repo -> Cli_primitive.path
|
||||
|
||||
val db_worker_runtime_script_path : unit -> Cli_primitive.path
|
||||
|
||||
val ensure_server :
|
||||
Cli_config.t ->
|
||||
Cli_primitive.repo ->
|
||||
create_empty_db:bool ->
|
||||
Transport.invoke_config Error.build_result Cli_effect.t
|
||||
|
||||
val start_server :
|
||||
Cli_config.t ->
|
||||
Cli_primitive.repo ->
|
||||
create_empty_db:bool ->
|
||||
start_result Error.build_result Cli_effect.t
|
||||
|
||||
val stop_server :
|
||||
Cli_config.t ->
|
||||
Cli_primitive.repo ->
|
||||
stop_result Error.build_result Cli_effect.t
|
||||
|
||||
val restart_server :
|
||||
Cli_config.t ->
|
||||
Cli_primitive.repo ->
|
||||
start_result Error.build_result Cli_effect.t
|
||||
|
||||
val list_servers : Cli_config.t -> server Rrbvec.t Cli_effect.t
|
||||
val list_graph_items : Cli_config.t -> Graph_types.graph_item Rrbvec.t
|
||||
val list_graphs : Cli_config.t -> Cli_primitive.graph Rrbvec.t
|
||||
|
||||
val cleanup_revision_mismatched_servers :
|
||||
Cli_config.t ->
|
||||
cli_revision:string ->
|
||||
cleanup_result Error.build_result Cli_effect.t
|
||||
188
cli/spec/runtime/transport.mli
Normal file
188
cli/spec/runtime/transport.mli
Normal file
@@ -0,0 +1,188 @@
|
||||
type invoke_config = {
|
||||
base_url : Cli_primitive.url;
|
||||
timeout_span : Time.span;
|
||||
profile_session : Profile_types.session option;
|
||||
}
|
||||
|
||||
type event_type = Cli_primitive.keyword
|
||||
type event_payload = Melange_edn_melange.any
|
||||
type event_subscription = { close : unit -> unit Cli_effect.t }
|
||||
|
||||
val connect_events :
|
||||
invoke_config ->
|
||||
(event_type -> event_payload -> unit Cli_effect.t) ->
|
||||
event_subscription Cli_effect.t
|
||||
|
||||
val write_output :
|
||||
format:Cli_primitive.keyword ->
|
||||
path:Cli_primitive.path ->
|
||||
data:Melange_edn_melange.any ->
|
||||
unit Error.build_result Cli_effect.t
|
||||
|
||||
val read_input :
|
||||
format:Cli_primitive.keyword ->
|
||||
path:Cli_primitive.path ->
|
||||
Melange_edn_melange.any Error.build_result Cli_effect.t
|
||||
|
||||
val thread_api_apply_outliner_ops :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
ops:Melange_edn_melange.vector Melange_edn_melange.t ->
|
||||
options:Melange_edn_melange.map Melange_edn_melange.t ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_backup_db_sqlite :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
path:Cli_primitive.path ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_cli_list_nodes :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
options:Melange_edn_melange.map Melange_edn_melange.t ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_cli_list_pages :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
options:Melange_edn_melange.map Melange_edn_melange.t ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_cli_list_properties :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
options:Melange_edn_melange.map Melange_edn_melange.t ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_cli_list_tags :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
options:Melange_edn_melange.map Melange_edn_melange.t ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_cli_list_tasks :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
options:Melange_edn_melange.map Melange_edn_melange.t ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_create_or_open_db :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
options:Melange_edn_melange.map Melange_edn_melange.t ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_db_sync_download_graph_by_id :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
graph_id:Cli_primitive.uuid ->
|
||||
graph_e2ee:bool ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_db_sync_ensure_user_rsa_keys :
|
||||
?options:Melange_edn_melange.map Melange_edn_melange.t ->
|
||||
invoke_config ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_db_sync_grant_graph_access :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
graph_id:Cli_primitive.uuid ->
|
||||
email:Cli_primitive.email ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_db_sync_list_remote_graphs :
|
||||
invoke_config -> Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_db_sync_request_asset_download :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
asset_uuid:Cli_primitive.uuid ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_db_sync_start :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_db_sync_status :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_db_sync_stop :
|
||||
invoke_config -> Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_db_sync_upload_graph :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_export_edn :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
options:Melange_edn_melange.map Melange_edn_melange.t ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_get_block_parents :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
block_id:Cli_primitive.db_id ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_get_block_refs :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
block_id:Cli_primitive.db_id ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_get_e2ee_password :
|
||||
invoke_config -> refresh_token:string -> Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_import_db_binary :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
data:Melange_edn_melange.any ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_import_edn :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
data:Melange_edn_melange.any ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_pull :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
selector:Melange_edn_melange.vector Melange_edn_melange.t ->
|
||||
lookup:Melange_edn_melange.any ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_q :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
query:Melange_edn_melange.vector Melange_edn_melange.t ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_set_db_sync_config :
|
||||
invoke_config ->
|
||||
config:Melange_edn_melange.map Melange_edn_melange.t ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_sync_app_state :
|
||||
invoke_config ->
|
||||
auth_state:Melange_edn_melange.map Melange_edn_melange.t ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_validate_db :
|
||||
invoke_config ->
|
||||
repo:Cli_primitive.repo ->
|
||||
options:Melange_edn_melange.map Melange_edn_melange.t ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
|
||||
val thread_api_verify_and_save_e2ee_password :
|
||||
invoke_config ->
|
||||
refresh_token:string ->
|
||||
password:string ->
|
||||
Melange_edn_melange.any Cli_effect.t
|
||||
Reference in New Issue
Block a user