sal-modular/extension/popup/debug_rhai.js

89 lines
2.6 KiB
JavaScript

/**
* Debug helper for WebAssembly Vault with Rhai scripts
*/
// Helper to try various Rhai scripts for debugging
export const RHAI_SCRIPTS = {
// Check if there's an active session
CHECK_SESSION: `
let has_session = false;
let current_keyspace = "";
// Try to access functions expected to exist in the vault namespace
if (isdef(vault) && isdef(vault::has_active_session)) {
has_session = vault::has_active_session();
if (has_session && isdef(vault::get_current_keyspace)) {
current_keyspace = vault::get_current_keyspace();
}
}
{
"has_session": has_session,
"keyspace": current_keyspace,
"available_functions": [
isdef(vault::list_keypairs) ? "list_keypairs" : null,
isdef(vault::add_keypair) ? "add_keypair" : null,
isdef(vault::has_active_session) ? "has_active_session" : null,
isdef(vault::get_current_keyspace) ? "get_current_keyspace" : null
]
}
`,
// Explicitly get keypairs for the current keyspace using session data
LIST_KEYPAIRS: `
let result = {"error": "Not initialized"};
if (isdef(vault) && isdef(vault::has_active_session) && vault::has_active_session()) {
let keyspace = vault::get_current_keyspace();
// Try to list the keypairs from the current session
if (isdef(vault::get_keypairs_from_session)) {
result = {
"keyspace": keyspace,
"keypairs": vault::get_keypairs_from_session()
};
} else {
result = {
"error": "vault::get_keypairs_from_session is not defined",
"keyspace": keyspace
};
}
}
result
`,
// Use Rhai to inspect the Vault storage directly (for advanced debugging)
INSPECT_VAULT_STORAGE: `
let result = {"error": "Not accessible"};
if (isdef(vault) && isdef(vault::inspect_storage)) {
result = vault::inspect_storage();
}
result
`
};
// Run all debug scripts and collect results
export async function runDiagnostics(wasmModule) {
if (!wasmModule || !wasmModule.run_rhai) {
throw new Error('WebAssembly module not loaded or run_rhai not available');
}
const results = {};
for (const [name, script] of Object.entries(RHAI_SCRIPTS)) {
try {
console.log(`Running Rhai diagnostic script: ${name}`);
results[name] = await wasmModule.run_rhai(script);
console.log(`Result from ${name}:`, results[name]);
} catch (error) {
console.error(`Error running script ${name}:`, error);
results[name] = { error: error.toString() };
}
}
return results;
}