feat(page-ai): add skill context and agent profile policy
This commit is contained in:
@@ -13,6 +13,10 @@ pub fn manifest() -> Value {
|
||||
"writeOwner": "rust-runtime-kernel"
|
||||
},
|
||||
"tools": [
|
||||
skill_read_tool(),
|
||||
context_snapshot_tool(),
|
||||
context_read_current_page_tool(),
|
||||
context_resolve_target_tool(),
|
||||
doc_fetch_tool(),
|
||||
doc_find_tool(),
|
||||
block_fetch_tool(),
|
||||
@@ -37,6 +41,95 @@ pub fn manifest() -> Value {
|
||||
})
|
||||
}
|
||||
|
||||
fn skill_read_tool() -> Value {
|
||||
let mut properties = base_identity_properties();
|
||||
if let Value::Object(map) = &mut properties {
|
||||
map.insert("skillId".into(), json!({ "type": "string" }));
|
||||
map.insert("agentId".into(), json!({ "type": "string" }));
|
||||
}
|
||||
json!({
|
||||
"name": "mnote.skill.read",
|
||||
"description": "按需读取 MNote skill 正文。默认 prompt 只列 skill 摘要,正文必须通过本工具懒加载。",
|
||||
"schemaVersion": TOOL_SCHEMA_VERSION,
|
||||
"capabilityScope": ["skill.read"],
|
||||
"status": "available",
|
||||
"annotations": tool_annotations(true, false, true, false),
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"required": ["skillId"],
|
||||
"properties": properties
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fn context_snapshot_tool() -> Value {
|
||||
let mut properties = base_identity_properties();
|
||||
if let Value::Object(map) = &mut properties {
|
||||
map.insert(
|
||||
"contextRefs".into(),
|
||||
json!({ "type": "array", "items": { "type": ["string", "object"] } }),
|
||||
);
|
||||
}
|
||||
json!({
|
||||
"name": "mnote.context.snapshot",
|
||||
"description": "返回本次 run 可用的 MNote 上下文摘要,不返回页面正文全文。",
|
||||
"schemaVersion": TOOL_SCHEMA_VERSION,
|
||||
"capabilityScope": ["context.read"],
|
||||
"status": "available",
|
||||
"annotations": tool_annotations(true, false, true, false),
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": properties
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fn context_read_current_page_tool() -> Value {
|
||||
let mut tool = doc_fetch_tool();
|
||||
if let Value::Object(map) = &mut tool {
|
||||
map.insert(
|
||||
"name".into(),
|
||||
Value::String("mnote.context.read_current_page".into()),
|
||||
);
|
||||
map.insert(
|
||||
"description".into(),
|
||||
Value::String("在 current_page contextRef 被授权时读取当前 Markdown 页面。".into()),
|
||||
);
|
||||
map.insert(
|
||||
"capabilityScope".into(),
|
||||
json!(["context.read", "page.read"]),
|
||||
);
|
||||
}
|
||||
tool
|
||||
}
|
||||
|
||||
fn context_resolve_target_tool() -> Value {
|
||||
let mut properties = base_identity_properties();
|
||||
if let Value::Object(map) = &mut properties {
|
||||
map.insert(
|
||||
"contextRefs".into(),
|
||||
json!({ "type": "array", "items": { "type": ["string", "object"] } }),
|
||||
);
|
||||
map.insert("relativePath".into(), json!({ "type": "string" }));
|
||||
map.insert(
|
||||
"fileVersion".into(),
|
||||
json!({ "type": ["string", "object"] }),
|
||||
);
|
||||
}
|
||||
json!({
|
||||
"name": "mnote.context.resolve_target",
|
||||
"description": "解析当前 Page AI run 的工作区、文档、rootUri、relativePath 与 file version。",
|
||||
"schemaVersion": TOOL_SCHEMA_VERSION,
|
||||
"capabilityScope": ["context.read"],
|
||||
"status": "available",
|
||||
"annotations": tool_annotations(true, false, true, false),
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": properties
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fn base_identity_properties() -> Value {
|
||||
json!({
|
||||
"workspaceId": { "type": "string" },
|
||||
|
||||
Reference in New Issue
Block a user