feat: add authorized Plugin Ticket data capabilities

This commit is contained in:
2026-10-30 21:45:03 +09:00
parent 0f82d6fa8f
commit 4f7dcfda61
72 changed files with 8847 additions and 65 deletions
Binary file not shown.
@@ -0,0 +1,47 @@
//! Compile-pass: the additive world uses the original Tool export and typed
//! imported Ticket resources; no handwritten canonical ABI or ambient authority.
use yoi_plugin_pdk::wit_bindgen;
wit_bindgen::generate!({
world: "ticket-tool-plugin",
path: "../../resources/plugin/wit-ticket",
generate_all,
runtime_path: "yoi_plugin_pdk::wit_bindgen::rt",
});
fn handle(
_: yoi_plugin_pdk::ToolContext,
input: String,
) -> yoi_plugin_pdk::Result<yoi_plugin_pdk::ToolOutput> {
yoi_plugin_pdk::ToolOutput::summary(input)
}
yoi_plugin_pdk::export_ticket_component_tool!(TicketProbe, handle);
#[test]
fn additive_export_uses_original_tool_result_abi() {
use exports::yoi::plugin2_0_0::tool::{Guest, Invocation};
let result = TicketProbe::invoke(Invocation {
invocation_id: "invocation".into(),
tool_name: "probe".into(),
input_json: "\"ok\"".into(),
config_json: "{}".into(),
remaining_ms: 1000,
})
.unwrap();
assert_eq!(result.summary, "ok");
let _access = yoi::host2_1_0::objects::Access::ExtensionWrite;
}
#[test]
fn old_wit_dependencies_are_exact_copies_not_augmented_versions() {
assert_eq!(
include_str!("../../../resources/plugin/wit/yoi-plugin-v2.wit"),
include_str!("../../../resources/plugin/wit-ticket/deps/yoi-plugin-v2/yoi-plugin-v2.wit")
);
assert_eq!(
include_str!("../../../resources/plugin/wit/deps/yoi-host/yoi-host-v2.wit"),
include_str!("../../../resources/plugin/wit-ticket/deps/yoi-host-v2/yoi-host-v2.wit")
);
assert_ne!(
yoi_plugin_pdk::TICKET_TOOL_WORLD,
yoi_plugin_pdk::TOOL_WORLD
);
}