@solongate/proxy 0.54.0 → 0.55.0

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.
Files changed (2) hide show
  1. package/hooks/audit.mjs +5 -7
  2. package/package.json +1 -1
package/hooks/audit.mjs CHANGED
@@ -127,13 +127,11 @@ function loadGhostPatterns() {
127
127
  function buildGhostOutput(toolName, toolInput, toolResponse, toolOutput, pats) {
128
128
  if (!Array.isArray(pats) || pats.length === 0) return null;
129
129
  const name = toolName || '';
130
- const getText = () => {
131
- if (typeof toolResponse === 'string') return toolResponse;
132
- if (toolResponse && typeof toolResponse.stdout === 'string') return toolResponse.stdout;
133
- if (toolResponse && typeof toolResponse.content === 'string') return toolResponse.content;
134
- if (typeof toolOutput === 'string' && toolOutput) return toolOutput;
135
- return null;
136
- };
130
+ // Use the SAME broad extraction as DLP redaction (Read file.content, array
131
+ // content, stdout, ). Previously this was narrower, so ghost-strip silently
132
+ // skipped tool shapes DLP still scanned a ghosted file then survived in a
133
+ // listing (e.g. the LS tool) even though names elsewhere got redacted.
134
+ const getText = () => extractOutputText(toolResponse, toolOutput);
137
135
  try {
138
136
  // Direct read of a hidden file → looks like it doesn't exist.
139
137
  if (name === 'Read' || name === 'NotebookRead') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solongate/proxy",
3
- "version": "0.54.0",
3
+ "version": "0.55.0",
4
4
  "description": "AI tool security proxy — protect any AI tool server with customizable policies, path/command constraints, rate limiting, and audit logging. Zero code changes required.",
5
5
  "type": "module",
6
6
  "bin": {