///|
async fn ensure_book_provider_manifest(
root : String,
moonbook_root : String,
) -> Unit {
let (command, args) = moonbook_runtime_invocation([])
let manifest = [
moonbook_task_provider_manifest_entry(root, moonbook_root, command~, args~),
]
let text = manifest.to_json().stringify()
write_workspace_text(moonclaw_provider_manifest_path(root), text)
write_workspace_text(moonbook_resource_provider_manifest_path(root), text)
}
///|
fn moonclaw_provider_manifest_path(root : String) -> String {
@moonsuite.product_artifact_for_book_root(root, "moonclaw", "providers.json")
}
///|
fn moonbook_resource_provider_manifest_path(root : String) -> String {
moonbook_adapter_path(root)
.join(moonbook_adapter_path(".moonsuite/resource-providers.json"))
.to_string()
}
///|
fn moonbook_task_provider_manifest_entry(
root : String,
moonbook_root : String,
command? : String = moonbook_moon_command(),
args? : Array[String] = ["run", "cmd/main", "--"],
) -> BookTaskProviderManifestEntry {
{
name: "moonbook",
title: "MoonBook Extension API",
description: "MoonBook provider runtime boundary for domain-local book logic.",
kind: "task-provider",
capabilities: ["provider", "extension", "provider.task", "extension.task"],
metadata: {
command,
args,
task_args_prefix: ["wiki", "extension"],
cwd: moonbook_root,
workspace_root: root,
},
}
}