Retire Convex paths and standardize local-first Pi runtime
This commit is contained in:
@@ -589,7 +589,7 @@ pub fn plan_page_title(
|
||||
) -> CliResult<CliJsonOutput> {
|
||||
let bridge = build_bridge_context(ctx, workspace_id, "page", "title", page_id);
|
||||
let command = CommandEnvelope {
|
||||
name: "documents.title.update".into(),
|
||||
name: "tree.node.rename".into(),
|
||||
command_id: build_command_id("page", "title", page_id),
|
||||
idempotency_key: bridge.idempotency_key.clone(),
|
||||
actor: build_actor_payload(ctx),
|
||||
@@ -644,7 +644,7 @@ pub fn plan_page_save(
|
||||
let content_value = parse_json_value(content_json, "content_json")?;
|
||||
let bridge = build_bridge_context(ctx, workspace_id, "page", "save", page_id);
|
||||
let command = CommandEnvelope {
|
||||
name: "documents.save".into(),
|
||||
name: "page.body.save".into(),
|
||||
command_id: build_command_id("page", "save", page_id),
|
||||
idempotency_key: bridge.idempotency_key.clone(),
|
||||
actor: build_actor_payload(ctx),
|
||||
@@ -699,7 +699,7 @@ pub fn plan_page_create(ctx: &CliContext, args: &PageCreateArgs<'_>) -> CliResul
|
||||
let content_value = parse_json_value(args.content_json, "content_json")?;
|
||||
let bridge = build_bridge_context(ctx, Some(args.workspace_id), "page", "create", args.page_id);
|
||||
let command = CommandEnvelope {
|
||||
name: "documents.create".into(),
|
||||
name: "tree.node.create".into(),
|
||||
command_id: build_command_id("page", "create", args.page_id),
|
||||
idempotency_key: bridge.idempotency_key.clone(),
|
||||
actor: build_actor_payload(ctx),
|
||||
@@ -755,7 +755,7 @@ pub fn plan_page_create(ctx: &CliContext, args: &PageCreateArgs<'_>) -> CliResul
|
||||
pub fn plan_page_move(ctx: &CliContext, args: &PageMoveArgs<'_>) -> CliResult<CliJsonOutput> {
|
||||
let bridge = build_bridge_context(ctx, args.workspace_id, "page", "move", args.page_id);
|
||||
let command = CommandEnvelope {
|
||||
name: "documents.move".into(),
|
||||
name: "tree.subtree.move".into(),
|
||||
command_id: build_command_id("page", "move", args.page_id),
|
||||
idempotency_key: bridge.idempotency_key.clone(),
|
||||
actor: build_actor_payload(ctx),
|
||||
@@ -805,7 +805,7 @@ pub fn plan_page_move(ctx: &CliContext, args: &PageMoveArgs<'_>) -> CliResult<Cl
|
||||
pub fn plan_page_delete(ctx: &CliContext, args: &PageDeleteArgs<'_>) -> CliResult<CliJsonOutput> {
|
||||
let bridge = build_bridge_context(ctx, args.workspace_id, "page", "delete", args.page_id);
|
||||
let command = CommandEnvelope {
|
||||
name: "documents.delete".into(),
|
||||
name: "tree.node.archive".into(),
|
||||
command_id: build_command_id("page", "delete", args.page_id),
|
||||
idempotency_key: bridge.idempotency_key.clone(),
|
||||
actor: build_actor_payload(ctx),
|
||||
@@ -849,7 +849,7 @@ pub fn plan_page_delete(ctx: &CliContext, args: &PageDeleteArgs<'_>) -> CliResul
|
||||
pub fn plan_page_restore(ctx: &CliContext, args: &PageRestoreArgs<'_>) -> CliResult<CliJsonOutput> {
|
||||
let bridge = build_bridge_context(ctx, args.workspace_id, "page", "restore", args.page_id);
|
||||
let command = CommandEnvelope {
|
||||
name: "documents.restore".into(),
|
||||
name: "tree.node.restore".into(),
|
||||
command_id: build_command_id("page", "restore", args.page_id),
|
||||
idempotency_key: bridge.idempotency_key.clone(),
|
||||
actor: build_actor_payload(ctx),
|
||||
@@ -1551,7 +1551,7 @@ fn execute_query(
|
||||
"documents.content.get"
|
||||
| "documents.meta.get"
|
||||
| "mindmaps.get"
|
||||
| "sidebar.dataset.list" => execute_retired_cloud_transport(name),
|
||||
| "sidebar.dataset.list" => reject_non_local_cli_transport(name),
|
||||
"search.documents" => execute_search_documents(transport, context, cli_ctx),
|
||||
other => Err(CliError::validation(format!("暂不支持执行 query: {other}"))),
|
||||
}
|
||||
@@ -1565,13 +1565,13 @@ fn execute_command(
|
||||
cli_ctx: &CliContext,
|
||||
) -> CliResult<Value> {
|
||||
match name {
|
||||
"documents.create"
|
||||
| "documents.move"
|
||||
| "documents.delete"
|
||||
| "documents.restore"
|
||||
| "documents.title.update"
|
||||
| "documents.save"
|
||||
| "mindmaps.put" => execute_retired_cloud_transport(name),
|
||||
"tree.node.create"
|
||||
| "tree.subtree.move"
|
||||
| "tree.node.archive"
|
||||
| "tree.node.restore"
|
||||
| "tree.node.rename"
|
||||
| "page.body.save"
|
||||
| "mindmaps.put" => reject_non_local_cli_transport(name),
|
||||
"insert_block" => execute_block_insert(normalized_input, context, cli_ctx),
|
||||
"blocks.patch" => execute_block_patch(normalized_input, transport, cli_ctx),
|
||||
"blocks.move" => execute_block_move(normalized_input, cli_ctx),
|
||||
@@ -1650,7 +1650,7 @@ fn execute_search_documents(
|
||||
_context: &CliOutputContext,
|
||||
_cli_ctx: &CliContext,
|
||||
) -> CliResult<Value> {
|
||||
execute_retired_cloud_transport("search.documents")
|
||||
reject_non_local_cli_transport("search.documents")
|
||||
}
|
||||
|
||||
fn execute_block_insert(
|
||||
@@ -1658,7 +1658,7 @@ fn execute_block_insert(
|
||||
_context: &CliOutputContext,
|
||||
_cli_ctx: &CliContext,
|
||||
) -> CliResult<Value> {
|
||||
execute_retired_cloud_transport("insert_block")
|
||||
reject_non_local_cli_transport("insert_block")
|
||||
}
|
||||
|
||||
fn execute_block_patch(
|
||||
@@ -1666,15 +1666,15 @@ fn execute_block_patch(
|
||||
_transport: &CliTransportPlan,
|
||||
_cli_ctx: &CliContext,
|
||||
) -> CliResult<Value> {
|
||||
execute_retired_cloud_transport("blocks.patch")
|
||||
reject_non_local_cli_transport("blocks.patch")
|
||||
}
|
||||
|
||||
fn execute_block_move(_normalized_input: &Value, _cli_ctx: &CliContext) -> CliResult<Value> {
|
||||
execute_retired_cloud_transport("blocks.move")
|
||||
reject_non_local_cli_transport("blocks.move")
|
||||
}
|
||||
|
||||
fn execute_block_embed(_normalized_input: &Value, _cli_ctx: &CliContext) -> CliResult<Value> {
|
||||
execute_retired_cloud_transport("blocks.embed")
|
||||
reject_non_local_cli_transport("blocks.embed")
|
||||
}
|
||||
|
||||
fn build_tool_target(
|
||||
@@ -1735,7 +1735,7 @@ fn load_tool_data(
|
||||
"image_read" => Ok(json!({ "source": "cli", "asset": Value::Null })),
|
||||
"doc_get" | "doc_find" | "doc_insert_blocks" | "doc_replace_range" => {
|
||||
let _ = read_doc_target(args, target)?;
|
||||
Err(retired_cloud_transport_error(tool_name))
|
||||
Err(non_local_cli_transport_error(tool_name))
|
||||
}
|
||||
"mindmap_get" | "mindmap_get_subtree" | "mindmap_apply_ops" | "mindmap_put" => {
|
||||
let document_id = read_doc_target(args, target)?;
|
||||
@@ -1745,7 +1745,7 @@ fn load_tool_data(
|
||||
.or_else(|| target.and_then(|value| value.block_id.as_deref()))
|
||||
.ok_or_else(|| CliError::validation("mindmap 工具缺少 mindmapId"))?;
|
||||
let _ = (document_id, mindmap_id);
|
||||
Err(retired_cloud_transport_error(tool_name))
|
||||
Err(non_local_cli_transport_error(tool_name))
|
||||
}
|
||||
other => Err(CliError::validation(format!(
|
||||
"暂不支持 tool 数据加载: {other}"
|
||||
@@ -1753,13 +1753,13 @@ fn load_tool_data(
|
||||
}
|
||||
}
|
||||
|
||||
fn execute_retired_cloud_transport(operation: &str) -> CliResult<Value> {
|
||||
Err(retired_cloud_transport_error(operation))
|
||||
fn reject_non_local_cli_transport(operation: &str) -> CliResult<Value> {
|
||||
Err(non_local_cli_transport_error(operation))
|
||||
}
|
||||
|
||||
fn retired_cloud_transport_error(operation: &str) -> CliError {
|
||||
fn non_local_cli_transport_error(operation: &str) -> CliError {
|
||||
CliError::validation(format!(
|
||||
"旧 Convex CLI 执行链已退役: {operation};请改用 local-first Rust/SQLite control-plane 路径"
|
||||
"非 local_folder 的 CLI 执行链已移除: {operation};请使用 local-first local_folder 路径"
|
||||
))
|
||||
}
|
||||
|
||||
@@ -2100,10 +2100,10 @@ mod tests {
|
||||
transport,
|
||||
..
|
||||
} => {
|
||||
assert_eq!(name, "documents.save");
|
||||
assert_eq!(name, "page.body.save");
|
||||
assert_eq!(command_id, "cmd_page_save_page_1");
|
||||
assert_eq!(transport.kind, "runtime_command_plan");
|
||||
assert_eq!(transport.function_name, "documents.save");
|
||||
assert_eq!(transport.function_name, "page.body.save");
|
||||
assert_eq!(
|
||||
transport.args_json,
|
||||
json!({
|
||||
@@ -2149,9 +2149,9 @@ mod tests {
|
||||
CliOperationOutput::Command {
|
||||
name, transport, ..
|
||||
} => {
|
||||
assert_eq!(name, "documents.create");
|
||||
assert_eq!(name, "tree.node.create");
|
||||
assert_eq!(transport.kind, "runtime_command_plan");
|
||||
assert_eq!(transport.function_name, "documents.create");
|
||||
assert_eq!(transport.function_name, "tree.node.create");
|
||||
assert_eq!(transport.args_json["workspaceId"], json!("ws_1"));
|
||||
assert_eq!(transport.args_json["parentId"], json!("parent_1"));
|
||||
}
|
||||
@@ -2160,7 +2160,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn page_move_json_contract_uses_documents_move() {
|
||||
fn page_move_json_contract_uses_tree_subtree_move() {
|
||||
let output = plan_page_move(
|
||||
&CliContext::default(),
|
||||
&PageMoveArgs {
|
||||
@@ -2176,9 +2176,9 @@ mod tests {
|
||||
CliOperationOutput::Command {
|
||||
name, transport, ..
|
||||
} => {
|
||||
assert_eq!(name, "documents.move");
|
||||
assert_eq!(name, "tree.subtree.move");
|
||||
assert_eq!(transport.kind, "runtime_command_plan");
|
||||
assert_eq!(transport.function_name, "documents.move");
|
||||
assert_eq!(transport.function_name, "tree.subtree.move");
|
||||
assert_eq!(transport.args_json["sortOrder"], json!(3));
|
||||
}
|
||||
_ => panic!("expected command output"),
|
||||
|
||||
Reference in New Issue
Block a user