feat: add dynamic autonomous DAVE presence
This commit is contained in:
@@ -110,6 +110,11 @@ export class TerminalAgent {
|
||||
working += `\n\nTOOL ERROR: ${decision.tool} is not allowlisted.`;
|
||||
continue;
|
||||
}
|
||||
if (tool.mutating && mode !== 'chat') {
|
||||
trace.push({ tool: tool.name, status: 'rejected', durationMs: 0, rationale: short(decision.rationale) });
|
||||
working += `\n\nTOOL ERROR: ${tool.name} is unavailable outside an operator-initiated chat. Continue with read-only evidence or return final JSON.`;
|
||||
continue;
|
||||
}
|
||||
if (tool.mutating) {
|
||||
const pendingAction = this._createPending(key, tool, decision.arguments || {}, decision.rationale);
|
||||
trace.push({ tool: tool.name, status: 'confirmation_required', durationMs: 0, rationale: short(decision.rationale) });
|
||||
@@ -216,7 +221,8 @@ export class TerminalAgent {
|
||||
}
|
||||
|
||||
_systemPrompt(mode) {
|
||||
const proactive = mode === 'proactive';
|
||||
const proactive = mode === 'proactive' || mode === 'presence';
|
||||
const presence = mode === 'presence';
|
||||
return `You are the operator's controlled Intelligence Terminal Security Manager. Your job is to identify material personal security risks, verify evidence, explain relevance, and propose practical protective actions. Select only allowlisted tools and use the minimum steps needed.
|
||||
|
||||
${DAVE_PERSONA_PROMPT}
|
||||
@@ -243,11 +249,15 @@ ${JSON.stringify(this.registry.describe())}
|
||||
PROTOCOL: Output exactly one JSON object, without markdown.
|
||||
Tool call: {"type":"tool_call","tool":"tool_name","arguments":{},"rationale":"short operational reason"}
|
||||
Final: {"type":"final","answer":"concise answer in the user's language","confidence":"low|medium|high","evidence":["URL or event id"],"notify":${proactive ? 'true' : 'false'},"priority":"routine|priority|flash"}
|
||||
${proactive ? 'In proactive mode, never call mutating tools. Set notify=true only for material, actionable, cross-checked changes. Otherwise notify=false and briefly explain why.' : 'In chat mode, notify must be false.'}`;
|
||||
${presence
|
||||
? 'In scheduled presence mode, never call mutating tools. Set notify=true for an evidence-grounded briefing, meaningful change, useful all-clear, or one practical check-in question. Set notify=false when available data is too stale or unreliable.'
|
||||
: proactive
|
||||
? 'In proactive mode, never call mutating tools. Set notify=true only for material, actionable, cross-checked changes. Otherwise notify=false and briefly explain why.'
|
||||
: 'In chat mode, notify must be false.'}`;
|
||||
}
|
||||
|
||||
_finalPrompt(mode) {
|
||||
const proactive = mode === 'proactive';
|
||||
const proactive = mode === 'proactive' || mode === 'presence';
|
||||
return `You are the operator's Intelligence Terminal Security Manager. Tool use is finished and unavailable in this phase.
|
||||
|
||||
${DAVE_PERSONA_PROMPT}
|
||||
|
||||
Reference in New Issue
Block a user