@hoilab/ada-cli 0.84.16 → 0.84.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/agent-session.d.ts +2 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +27 -3
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- package/dist/core/memory-engine/engine.js +34 -28
- package/dist/core/memory-engine/engine.js.map +1 -1
- package/dist/core/memory-engine/vault.d.ts +102 -0
- package/dist/core/memory-engine/vault.d.ts.map +1 -0
- package/dist/core/memory-engine/vault.js +274 -0
- package/dist/core/memory-engine/vault.js.map +1 -0
- package/dist/core/resource-loader.d.ts +3 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +7 -0
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +118 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
|
@@ -39,6 +39,7 @@ import { createLocalBashOperations } from "./tools/bash.js";
|
|
|
39
39
|
import { createAllToolDefinitions } from "./tools/index.js";
|
|
40
40
|
import { createMemoryEngineTools } from "./memory-engine/tools.js";
|
|
41
41
|
import { redactSensitive } from "./memory-engine/security.js";
|
|
42
|
+
import { expandVaultRefs } from "./memory-engine/vault.js";
|
|
42
43
|
import { createToolDefinitionFromAgentTool } from "./tools/tool-definition-wrapper.js";
|
|
43
44
|
import { addUsageToTotals, createUsageTotals } from "./usage-totals.js";
|
|
44
45
|
/**
|
|
@@ -468,6 +469,8 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
468
469
|
// Track last assistant message for auto-compaction check
|
|
469
470
|
_lastAssistantMessage = undefined;
|
|
470
471
|
_lastAutoMemorizeAt = 0;
|
|
472
|
+
/** Redacted user-message content pending persistence (vault expansion). */
|
|
473
|
+
_pendingUserRedactions = [];
|
|
471
474
|
/** Internal handler for agent events - shared by subscribe and reconnect */
|
|
472
475
|
_handleAgentEvent = async (event) => {
|
|
473
476
|
// When a user message starts, check if it's from either queue and remove it BEFORE emitting
|
|
@@ -527,8 +530,15 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
527
530
|
else if (event.message.role === "user" ||
|
|
528
531
|
event.message.role === "assistant" ||
|
|
529
532
|
event.message.role === "toolResult") {
|
|
530
|
-
// Regular LLM message - persist as SessionMessageEntry
|
|
531
|
-
|
|
533
|
+
// Regular LLM message - persist as SessionMessageEntry.
|
|
534
|
+
// Vault expansion: persist the REDACTED form so secrets expanded
|
|
535
|
+
// from the vault never land in the session file.
|
|
536
|
+
let toPersist = event.message;
|
|
537
|
+
if (event.message.role === "user" && this._pendingUserRedactions.length > 0) {
|
|
538
|
+
const redactedText = this._pendingUserRedactions.shift();
|
|
539
|
+
toPersist = { ...event.message, content: [{ type: "text", text: redactedText }] };
|
|
540
|
+
}
|
|
541
|
+
this.sessionManager.appendMessage(toPersist);
|
|
532
542
|
}
|
|
533
543
|
// Other message types (bashExecution, compactionSummary, branchSummary) are persisted elsewhere
|
|
534
544
|
// Track assistant message for auto-compaction (checked on agent_end)
|
|
@@ -1002,11 +1012,25 @@ Task: given the CURRENT MEMORY and the LATEST CONVERSATION TURN, produce the COM
|
|
|
1002
1012
|
// + audit) and redact it BEFORE it reaches the LLM, the session file
|
|
1003
1013
|
// or the chat transcript. The user sees censored content; the raw
|
|
1004
1014
|
// secret is never persisted anywhere.
|
|
1015
|
+
// The engine exists whenever the SDK is built with the memory module;
|
|
1016
|
+
// detection + redaction only need config (not the initialized stores),
|
|
1017
|
+
// so they are ALWAYS applied — a failed init must never disable them.
|
|
1005
1018
|
const memoryEngine = this._resourceLoader.getMemoryEngine();
|
|
1006
|
-
if (memoryEngine
|
|
1019
|
+
if (memoryEngine) {
|
|
1007
1020
|
memoryEngine.checkUserTextForSensitive(expandedText);
|
|
1008
1021
|
expandedText = redactSensitive(expandedText, memoryEngine.privacyLevel);
|
|
1009
1022
|
}
|
|
1023
|
+
// Secure Vault: expand @vault:<name> references so the LLM can use
|
|
1024
|
+
// secrets without them ever being persisted. The redacted text is
|
|
1025
|
+
// kept for session persistence (applied in message_end).
|
|
1026
|
+
const vaultManager = this._resourceLoader.getVaultManager();
|
|
1027
|
+
if (vaultManager) {
|
|
1028
|
+
const expansion = expandVaultRefs(expandedText, vaultManager);
|
|
1029
|
+
if (expansion.expanded.length > 0) {
|
|
1030
|
+
this._pendingUserRedactions.push(expandedText);
|
|
1031
|
+
expandedText = expansion.text;
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1010
1034
|
// If streaming, queue via steer() or followUp() based on option
|
|
1011
1035
|
if (this.isStreaming) {
|
|
1012
1036
|
if (!options?.streamingBehavior) {
|