Files
NetMesh/electron/shared/vaultAgentGuidance.cjs

46 lines
2.7 KiB
JavaScript
Raw Normal View History

"use strict";
/**
* Shared Vault tool-selection guidance for MCP external agents and get_environment.
* Keep in sync with infrastructure/ai/cattyAgent/systemPrompt.ts (Catty sidebar).
*/
const VAULT_HOSTS_VS_NOTES_GUIDANCE =
"Vault → Hosts vs Vault → Notes: When the user asks to add/create/import a host "
+ "(创建主机、添加主机、保存 SSH 连接凭据), use vault_hosts_create with dryRun=true first, "
+ "or vault_hosts_import for known export formats (PuTTY, MobaXterm, CSV, SecureCRT, ssh_config) — "
+ "NOT vault_notes_create. For attached host files, use vault_hosts_import only when the attachment is a known export format; "
+ "for unknown attached host/server text, read the attachment content, extract hostname, username, password, port, group, tags, and label yourself, "
+ "then call vault_hosts_create with dryRun=true first. Extract hostname, username, password or local keyPath, port, group, tags, and label from the user's text; "
+ "put long admin tables or remarks in the host notes field (host_notes_set / Host Details metadata), "
+ "not Vault sidebar Notes. Use vault_notes_create or vault_notes_update ONLY when the user explicitly wants "
+ "markdown documentation in Vault → Notes (保险箱笔记 sidebar). "
+ "Use vault_hosts_list to resolve hostId before vault_hosts_update or vault_hosts_delete. "
+ "If vault_hosts_create or vault_hosts_import fails, report the error — do not silently create a Vault note instead.";
const VAULT_SCRIPTS_GUIDANCE =
"Snippets vs automation scripts: snippets_* for shell command text (optional {{variables}}). "
+ "scripts_* for nct JavaScript automation (await nct.screen.sendLine, waitForText/waitForRegex, dialogs). "
+ "Call scripts_reference before authoring scripts. scripts_run with wait=true blocks until completion; "
+ "use scripts_runs_list / scripts_run_stop / scripts_run_pause / scripts_run_resume for lifecycle. "
+ "Triggers: manual, onConnect (runs after connect), onOutput (regex triggerPattern). "
+ "Host/group linking: scripts_targets_set supports targets and dynamic targetGroups; "
+ "per-host connect order: host_connect_scripts_list / host_connect_scripts_set.";
function appendVaultAgentGuidance(description) {
const base = typeof description === "string" ? description.trim() : "";
let result = base;
if (!result.includes("Vault → Hosts vs Vault → Notes")) {
result = result ? `${result} ${VAULT_HOSTS_VS_NOTES_GUIDANCE}` : VAULT_HOSTS_VS_NOTES_GUIDANCE;
}
if (!result.includes("Snippets vs automation scripts")) {
result = result ? `${result} ${VAULT_SCRIPTS_GUIDANCE}` : VAULT_SCRIPTS_GUIDANCE;
}
return result;
}
module.exports = {
VAULT_HOSTS_VS_NOTES_GUIDANCE,
VAULT_SCRIPTS_GUIDANCE,
appendVaultAgentGuidance,
};