nexus-agents 11.5.5 → 11.5.6
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/{ast-rule-runner-CVDVRVAS.js → ast-rule-runner-TY2DZJBQ.js} +5 -5
- package/dist/{child-mcp-config-H5G3DK7S.js → child-mcp-config-YKGYKLE4.js} +4 -4
- package/dist/{chunk-PY6GUS22.js → chunk-2GXAL4WV.js} +2 -2
- package/dist/chunk-3665PYSK.js +118 -0
- package/dist/chunk-3665PYSK.js.map +1 -0
- package/dist/{chunk-6V4ERXGA.js → chunk-3DTEV3ZW.js} +7 -7
- package/dist/{chunk-EBMDEUH7.js → chunk-442TR7T5.js} +5 -5
- package/dist/{chunk-FOKNFLXF.js → chunk-4S7H76GJ.js} +2 -2
- package/dist/{chunk-6YWQAEAN.js → chunk-4TIN5SKQ.js} +2 -2
- package/dist/{chunk-Q7FEF3YH.js → chunk-4UNCRRJP.js} +2 -2
- package/dist/{chunk-TNZSALI4.js → chunk-53J7YO4O.js} +2 -2
- package/dist/{chunk-3RVTDYT7.js → chunk-6EW6KXEW.js} +150 -142
- package/dist/chunk-6EW6KXEW.js.map +1 -0
- package/dist/{chunk-4JCRCOOV.js → chunk-A3XTSBSA.js} +4 -4
- package/dist/{chunk-GW35PEDO.js → chunk-BIJRNGI4.js} +2 -2
- package/dist/{chunk-GP2SE2FW.js → chunk-CAMFBH4W.js} +7 -7
- package/dist/{chunk-EA234IFY.js → chunk-CRE3VUQU.js} +8 -8
- package/dist/{chunk-K6OPXID6.js → chunk-F3QJ6MMF.js} +2 -2
- package/dist/{chunk-5SZD2I3X.js → chunk-GQ3ZYHFA.js} +5 -5
- package/dist/{chunk-6FHFS2QA.js → chunk-H5N7VP4L.js} +2 -2
- package/dist/{chunk-4PNQ3OUO.js → chunk-HHB2Z7LX.js} +2 -2
- package/dist/{chunk-432FGBZR.js → chunk-KZIDRH7L.js} +4 -4
- package/dist/{chunk-SNLDHZQ5.js → chunk-LTH76W6C.js} +3 -3
- package/dist/{chunk-KUAYIDEG.js → chunk-MS4PMYDL.js} +2 -2
- package/dist/{chunk-UMX44QLL.js → chunk-NJZSAXXK.js} +4 -4
- package/dist/{chunk-LNGZKTJL.js → chunk-OB7DE4QN.js} +3 -3
- package/dist/{chunk-EFDMPXMP.js → chunk-OMT226GF.js} +2 -2
- package/dist/{chunk-AUO7FSZX.js → chunk-OWRB3X7N.js} +2 -2
- package/dist/{chunk-7P7TBPXE.js → chunk-P4EL25PO.js} +4 -4
- package/dist/{chunk-5EYCAD6W.js → chunk-P7UYXTBL.js} +4 -4
- package/dist/{chunk-ZQYQZ7FQ.js → chunk-PSHG65FT.js} +14 -14
- package/dist/{chunk-CYI7ZAMR.js → chunk-SKSR4Q3L.js} +13 -13
- package/dist/{chunk-JYZDA5Z7.js → chunk-SNEXMYWH.js} +4 -4
- package/dist/{chunk-XJEV7JH2.js → chunk-UPATHBFM.js} +9 -9
- package/dist/{chunk-Z5NCR7DH.js → chunk-X4A3XAWE.js} +2 -2
- package/dist/{chunk-JRGPMF67.js → chunk-XCNZ63HH.js} +7 -7
- package/dist/{chunk-3VH6RBVJ.js → chunk-XT4BDCNW.js} +2 -2
- package/dist/{chunk-5BYTGR63.js → chunk-Y3FXFM7Y.js} +4 -4
- package/dist/{cli-circuit-breaker-7QJ4SIGM.js → cli-circuit-breaker-JVZ5PU4B.js} +5 -5
- package/dist/{cli-readiness-6WFM5N4I.js → cli-readiness-7JCRT2EI.js} +9 -9
- package/dist/{cli-server-gateway-TA7TRBJ5.js → cli-server-gateway-5MQUDWGD.js} +13 -13
- package/dist/cli.js +44 -44
- package/dist/{composite-router-52ZLFXVR.js → composite-router-XSLAMEZ2.js} +4 -4
- package/dist/{consensus-vote-FPSXMIFK.js → consensus-vote-YQS6ALNB.js} +17 -17
- package/dist/{context-retriever-HTBOLH5P.js → context-retriever-R73UHFWI.js} +10 -10
- package/dist/{doctor-deep-TTIMGYHS.js → doctor-deep-M2TBIEBC.js} +5 -5
- package/dist/{doctor-gateway-report-I4AFMGUC.js → doctor-gateway-report-YDT7XPVY.js} +8 -8
- package/dist/{doctor-live-E5ZMGVXF.js → doctor-live-Z4LF54MW.js} +13 -13
- package/dist/{expert-bridge-F6NAPNZC.js → expert-bridge-W4VQIKJZ.js} +6 -6
- package/dist/{factory-FO6ICRSI.js → factory-ASG5ZHNZ.js} +7 -7
- package/dist/{factory-7IAD2557.js → factory-PHXMDQTV.js} +12 -12
- package/dist/{improvement-review-536ZRPUI.js → improvement-review-KHHA4HWY.js} +8 -8
- package/dist/index.js +30 -30
- package/dist/{init-opencode-46DMB7VH.js → init-opencode-WVUH45BK.js} +7 -7
- package/dist/{issue-triage-LBR6OJQ3.js → issue-triage-WJJTD4MM.js} +7 -7
- package/dist/{model-config-helpers-PSOLGUS4.js → model-config-helpers-7ZDR3P4Y.js} +3 -3
- package/dist/{openai-compat-adapter-ARDUWHBA.js → openai-compat-adapter-WMFPZ3UG.js} +7 -7
- package/dist/{pr-reviewer-helpers-YVHGQLCF.js → pr-reviewer-helpers-KFU6XHHL.js} +5 -5
- package/dist/{registry-command-7FRS53FH.js → registry-command-AOMYQ2FJ.js} +2 -2
- package/dist/{repo-security-plan-YINATBVX.js → repo-security-plan-7AUZZRCO.js} +4 -4
- package/dist/{research-helpers-synthesize-VRWS6GBM.js → research-helpers-synthesize-Q7TPPQMV.js} +6 -6
- package/dist/{routing-memory-52ZSJBWK.js → routing-memory-CQVHYZTF.js} +4 -4
- package/dist/{session-memory-PDVXENIX.js → session-memory-VKEGIPWB.js} +5 -5
- package/dist/{setup-config-XEAU5FMU.js → setup-config-W23HGFJX.js} +5 -5
- package/dist/{setup-custom-api-BTGG5HNE.js → setup-custom-api-ENCKU6RP.js} +5 -5
- package/dist/{setup-data-dir-FMHY5AVX.js → setup-data-dir-AFKZMHNU.js} +16 -16
- package/dist/{tool-memory-VFHAQIEN.js → tool-memory-YKHJP5A7.js} +7 -7
- package/dist/{unified-registry-KHXB62QQ.js → unified-registry-TLEJ4EIA.js} +12 -12
- package/dist/{weather-report-DZLWIKOZ.js → weather-report-OO44SAKC.js} +4 -4
- package/package.json +1 -1
- package/dist/chunk-3RVTDYT7.js.map +0 -1
- package/dist/chunk-7LKX7AUQ.js +0 -57
- package/dist/chunk-7LKX7AUQ.js.map +0 -1
- /package/dist/{ast-rule-runner-CVDVRVAS.js.map → ast-rule-runner-TY2DZJBQ.js.map} +0 -0
- /package/dist/{child-mcp-config-H5G3DK7S.js.map → child-mcp-config-YKGYKLE4.js.map} +0 -0
- /package/dist/{chunk-PY6GUS22.js.map → chunk-2GXAL4WV.js.map} +0 -0
- /package/dist/{chunk-6V4ERXGA.js.map → chunk-3DTEV3ZW.js.map} +0 -0
- /package/dist/{chunk-EBMDEUH7.js.map → chunk-442TR7T5.js.map} +0 -0
- /package/dist/{chunk-FOKNFLXF.js.map → chunk-4S7H76GJ.js.map} +0 -0
- /package/dist/{chunk-6YWQAEAN.js.map → chunk-4TIN5SKQ.js.map} +0 -0
- /package/dist/{chunk-Q7FEF3YH.js.map → chunk-4UNCRRJP.js.map} +0 -0
- /package/dist/{chunk-TNZSALI4.js.map → chunk-53J7YO4O.js.map} +0 -0
- /package/dist/{chunk-4JCRCOOV.js.map → chunk-A3XTSBSA.js.map} +0 -0
- /package/dist/{chunk-GW35PEDO.js.map → chunk-BIJRNGI4.js.map} +0 -0
- /package/dist/{chunk-GP2SE2FW.js.map → chunk-CAMFBH4W.js.map} +0 -0
- /package/dist/{chunk-EA234IFY.js.map → chunk-CRE3VUQU.js.map} +0 -0
- /package/dist/{chunk-K6OPXID6.js.map → chunk-F3QJ6MMF.js.map} +0 -0
- /package/dist/{chunk-5SZD2I3X.js.map → chunk-GQ3ZYHFA.js.map} +0 -0
- /package/dist/{chunk-6FHFS2QA.js.map → chunk-H5N7VP4L.js.map} +0 -0
- /package/dist/{chunk-4PNQ3OUO.js.map → chunk-HHB2Z7LX.js.map} +0 -0
- /package/dist/{chunk-432FGBZR.js.map → chunk-KZIDRH7L.js.map} +0 -0
- /package/dist/{chunk-SNLDHZQ5.js.map → chunk-LTH76W6C.js.map} +0 -0
- /package/dist/{chunk-KUAYIDEG.js.map → chunk-MS4PMYDL.js.map} +0 -0
- /package/dist/{chunk-UMX44QLL.js.map → chunk-NJZSAXXK.js.map} +0 -0
- /package/dist/{chunk-LNGZKTJL.js.map → chunk-OB7DE4QN.js.map} +0 -0
- /package/dist/{chunk-EFDMPXMP.js.map → chunk-OMT226GF.js.map} +0 -0
- /package/dist/{chunk-AUO7FSZX.js.map → chunk-OWRB3X7N.js.map} +0 -0
- /package/dist/{chunk-7P7TBPXE.js.map → chunk-P4EL25PO.js.map} +0 -0
- /package/dist/{chunk-5EYCAD6W.js.map → chunk-P7UYXTBL.js.map} +0 -0
- /package/dist/{chunk-ZQYQZ7FQ.js.map → chunk-PSHG65FT.js.map} +0 -0
- /package/dist/{chunk-CYI7ZAMR.js.map → chunk-SKSR4Q3L.js.map} +0 -0
- /package/dist/{chunk-JYZDA5Z7.js.map → chunk-SNEXMYWH.js.map} +0 -0
- /package/dist/{chunk-XJEV7JH2.js.map → chunk-UPATHBFM.js.map} +0 -0
- /package/dist/{chunk-Z5NCR7DH.js.map → chunk-X4A3XAWE.js.map} +0 -0
- /package/dist/{chunk-JRGPMF67.js.map → chunk-XCNZ63HH.js.map} +0 -0
- /package/dist/{chunk-3VH6RBVJ.js.map → chunk-XT4BDCNW.js.map} +0 -0
- /package/dist/{chunk-5BYTGR63.js.map → chunk-Y3FXFM7Y.js.map} +0 -0
- /package/dist/{cli-circuit-breaker-7QJ4SIGM.js.map → cli-circuit-breaker-JVZ5PU4B.js.map} +0 -0
- /package/dist/{cli-readiness-6WFM5N4I.js.map → cli-readiness-7JCRT2EI.js.map} +0 -0
- /package/dist/{cli-server-gateway-TA7TRBJ5.js.map → cli-server-gateway-5MQUDWGD.js.map} +0 -0
- /package/dist/{composite-router-52ZLFXVR.js.map → composite-router-XSLAMEZ2.js.map} +0 -0
- /package/dist/{consensus-vote-FPSXMIFK.js.map → consensus-vote-YQS6ALNB.js.map} +0 -0
- /package/dist/{context-retriever-HTBOLH5P.js.map → context-retriever-R73UHFWI.js.map} +0 -0
- /package/dist/{doctor-deep-TTIMGYHS.js.map → doctor-deep-M2TBIEBC.js.map} +0 -0
- /package/dist/{doctor-gateway-report-I4AFMGUC.js.map → doctor-gateway-report-YDT7XPVY.js.map} +0 -0
- /package/dist/{doctor-live-E5ZMGVXF.js.map → doctor-live-Z4LF54MW.js.map} +0 -0
- /package/dist/{expert-bridge-F6NAPNZC.js.map → expert-bridge-W4VQIKJZ.js.map} +0 -0
- /package/dist/{factory-7IAD2557.js.map → factory-ASG5ZHNZ.js.map} +0 -0
- /package/dist/{factory-FO6ICRSI.js.map → factory-PHXMDQTV.js.map} +0 -0
- /package/dist/{improvement-review-536ZRPUI.js.map → improvement-review-KHHA4HWY.js.map} +0 -0
- /package/dist/{init-opencode-46DMB7VH.js.map → init-opencode-WVUH45BK.js.map} +0 -0
- /package/dist/{issue-triage-LBR6OJQ3.js.map → issue-triage-WJJTD4MM.js.map} +0 -0
- /package/dist/{model-config-helpers-PSOLGUS4.js.map → model-config-helpers-7ZDR3P4Y.js.map} +0 -0
- /package/dist/{openai-compat-adapter-ARDUWHBA.js.map → openai-compat-adapter-WMFPZ3UG.js.map} +0 -0
- /package/dist/{pr-reviewer-helpers-YVHGQLCF.js.map → pr-reviewer-helpers-KFU6XHHL.js.map} +0 -0
- /package/dist/{registry-command-7FRS53FH.js.map → registry-command-AOMYQ2FJ.js.map} +0 -0
- /package/dist/{repo-security-plan-YINATBVX.js.map → repo-security-plan-7AUZZRCO.js.map} +0 -0
- /package/dist/{research-helpers-synthesize-VRWS6GBM.js.map → research-helpers-synthesize-Q7TPPQMV.js.map} +0 -0
- /package/dist/{routing-memory-52ZSJBWK.js.map → routing-memory-CQVHYZTF.js.map} +0 -0
- /package/dist/{session-memory-PDVXENIX.js.map → session-memory-VKEGIPWB.js.map} +0 -0
- /package/dist/{setup-config-XEAU5FMU.js.map → setup-config-W23HGFJX.js.map} +0 -0
- /package/dist/{setup-custom-api-BTGG5HNE.js.map → setup-custom-api-ENCKU6RP.js.map} +0 -0
- /package/dist/{setup-data-dir-FMHY5AVX.js.map → setup-data-dir-AFKZMHNU.js.map} +0 -0
- /package/dist/{tool-memory-VFHAQIEN.js.map → tool-memory-YKHJP5A7.js.map} +0 -0
- /package/dist/{unified-registry-KHXB62QQ.js.map → unified-registry-TLEJ4EIA.js.map} +0 -0
- /package/dist/{weather-report-DZLWIKOZ.js.map → weather-report-OO44SAKC.js.map} +0 -0
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
getBuiltInAstRulesPath,
|
|
10
10
|
loadRules,
|
|
11
11
|
runAstQaRules
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-BIJRNGI4.js";
|
|
13
|
+
import "./chunk-3DTEV3ZW.js";
|
|
14
14
|
import "./chunk-XBEKMUTO.js";
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-XT4BDCNW.js";
|
|
16
|
+
import "./chunk-53J7YO4O.js";
|
|
17
17
|
import "./chunk-CBN5IKTG.js";
|
|
18
18
|
import "./chunk-UFAK5UGH.js";
|
|
19
19
|
import "./chunk-GR6WCJWY.js";
|
|
@@ -34,4 +34,4 @@ export {
|
|
|
34
34
|
loadRules,
|
|
35
35
|
runAstQaRules
|
|
36
36
|
};
|
|
37
|
-
//# sourceMappingURL=ast-rule-runner-
|
|
37
|
+
//# sourceMappingURL=ast-rule-runner-TY2DZJBQ.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
nexusMkdtempSync
|
|
3
3
|
} from "./chunk-CBDUTJJC.js";
|
|
4
|
-
import "./chunk-
|
|
4
|
+
import "./chunk-3DTEV3ZW.js";
|
|
5
5
|
import "./chunk-XBEKMUTO.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-XT4BDCNW.js";
|
|
7
|
+
import "./chunk-53J7YO4O.js";
|
|
8
8
|
import "./chunk-CBN5IKTG.js";
|
|
9
9
|
import "./chunk-UFAK5UGH.js";
|
|
10
10
|
import {
|
|
@@ -81,4 +81,4 @@ async function generateMcpConfig(options) {
|
|
|
81
81
|
export {
|
|
82
82
|
generateMcpConfig
|
|
83
83
|
};
|
|
84
|
-
//# sourceMappingURL=child-mcp-config-
|
|
84
|
+
//# sourceMappingURL=child-mcp-config-YKGYKLE4.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
err,
|
|
6
6
|
getErrorMessage,
|
|
7
7
|
ok
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-3DTEV3ZW.js";
|
|
9
9
|
import {
|
|
10
10
|
createLogger,
|
|
11
11
|
getTimeProvider
|
|
@@ -376,4 +376,4 @@ export {
|
|
|
376
376
|
SessionMemory,
|
|
377
377
|
createSessionMemory
|
|
378
378
|
};
|
|
379
|
-
//# sourceMappingURL=chunk-
|
|
379
|
+
//# sourceMappingURL=chunk-2GXAL4WV.js.map
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import {
|
|
2
|
+
redactCredentialShapes
|
|
3
|
+
} from "./chunk-GR6WCJWY.js";
|
|
4
|
+
|
|
5
|
+
// src/security/output-sanitizer.ts
|
|
6
|
+
var REDACTED_KEY_PLACEHOLDER = "[REDACTED_KEY]";
|
|
7
|
+
function sanitizeOutput(text, placeholder = REDACTED_KEY_PLACEHOLDER) {
|
|
8
|
+
if (text === "") return text;
|
|
9
|
+
return redactCredentialShapes(text, placeholder);
|
|
10
|
+
}
|
|
11
|
+
function isJsonDocument(text) {
|
|
12
|
+
if (!/^\s*[[{"]/.test(text)) return false;
|
|
13
|
+
try {
|
|
14
|
+
JSON.parse(text);
|
|
15
|
+
return true;
|
|
16
|
+
} catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function contextValueEnd(text, start, query, json) {
|
|
21
|
+
let end = start;
|
|
22
|
+
while (end < text.length) {
|
|
23
|
+
const char = text[end] ?? "";
|
|
24
|
+
if (/\s/.test(char) || query && char === "&") break;
|
|
25
|
+
if (json && char === '"') break;
|
|
26
|
+
if (json && char === "\\") end++;
|
|
27
|
+
end++;
|
|
28
|
+
}
|
|
29
|
+
return Math.min(end, text.length);
|
|
30
|
+
}
|
|
31
|
+
var SEMGREP_FINDING_LOCATION = /^[\w./@+-]+:\d+(?![\w.])/;
|
|
32
|
+
function isSemgrepRuleId(text, start, valueStart) {
|
|
33
|
+
const scannerStart = text.lastIndexOf("semgrep:", start);
|
|
34
|
+
if (scannerStart < 0) return false;
|
|
35
|
+
const rule = text.slice(scannerStart, start);
|
|
36
|
+
if (!/^semgrep:(?:[\w.-]*[._-])?generic-$/i.test(rule)) return false;
|
|
37
|
+
return SEMGREP_FINDING_LOCATION.test(text.slice(valueStart, valueStart + 4096));
|
|
38
|
+
}
|
|
39
|
+
function redactContextValues(text, rule, placeholder, json) {
|
|
40
|
+
let result = "";
|
|
41
|
+
let copiedUntil = 0;
|
|
42
|
+
for (const match of text.matchAll(rule.prefixes)) {
|
|
43
|
+
if (match.index < copiedUntil) continue;
|
|
44
|
+
const quote = match.groups?.["q"] ?? "";
|
|
45
|
+
const keyEnd = match.index + match[0].length - quote.length;
|
|
46
|
+
if (match[0].toLowerCase() === "secret:" && isSemgrepRuleId(text, match.index, keyEnd)) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const start = json && quote !== '"' ? keyEnd + quote.length : keyEnd;
|
|
50
|
+
const end = contextValueEnd(text, start, rule.query === true, json);
|
|
51
|
+
if (end - start < rule.minimumLength) continue;
|
|
52
|
+
result += text.slice(copiedUntil, start) + placeholder;
|
|
53
|
+
copiedUntil = end;
|
|
54
|
+
}
|
|
55
|
+
return result + text.slice(copiedUntil);
|
|
56
|
+
}
|
|
57
|
+
var BEARER_HEADER_RULE = {
|
|
58
|
+
prefixes: /authorization:\s*bearer\s+(?<q>\\?["'])?/gi,
|
|
59
|
+
minimumLength: 1
|
|
60
|
+
};
|
|
61
|
+
var BASIC_HEADER_RULE = {
|
|
62
|
+
prefixes: /authorization:\s*basic\s+(?<q>\\?["'])?/gi,
|
|
63
|
+
minimumLength: 1
|
|
64
|
+
};
|
|
65
|
+
var ASSIGNMENT_RULE = {
|
|
66
|
+
prefixes: /\b(?:password|passwd|secret)\s*[=:]\s*(?<q>\\?["'])?/gi,
|
|
67
|
+
minimumLength: 4
|
|
68
|
+
};
|
|
69
|
+
var QUERY_RULE = {
|
|
70
|
+
prefixes: /[?&](?:api[_-]?key|token|access[_-]?token|secret|password|prompt|system_prompt|user_prompt)=/gi,
|
|
71
|
+
minimumLength: 1,
|
|
72
|
+
query: true
|
|
73
|
+
};
|
|
74
|
+
function sanitizeErrorDetails(text, apiKey, placeholder = REDACTED_KEY_PLACEHOLDER) {
|
|
75
|
+
if (text === "") return "";
|
|
76
|
+
let result = text;
|
|
77
|
+
if (apiKey !== void 0 && apiKey.trim() !== "") {
|
|
78
|
+
result = result.replaceAll(apiKey.trim(), placeholder);
|
|
79
|
+
}
|
|
80
|
+
result = sanitizeOutput(result, placeholder);
|
|
81
|
+
const json = isJsonDocument(result);
|
|
82
|
+
result = redactContextValues(result, BEARER_HEADER_RULE, placeholder, json);
|
|
83
|
+
result = redactContextValues(result, BASIC_HEADER_RULE, placeholder, json);
|
|
84
|
+
result = result.replace(/(bearer\s+)[A-Za-z0-9._~+/-]+=*/gi, `$1${placeholder}`);
|
|
85
|
+
result = redactContextValues(result, ASSIGNMENT_RULE, placeholder, json);
|
|
86
|
+
result = redactContextValues(result, QUERY_RULE, placeholder, json);
|
|
87
|
+
result = result.replace(
|
|
88
|
+
/"(api[_-]?key|access[_-]?token|token|secret|password|prompt|system_prompt|user_prompt)"\s*:\s*"(?:[^"\\]|\\.)*"/gi,
|
|
89
|
+
`"$1": "${placeholder}"`
|
|
90
|
+
);
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
function serializedForm(value) {
|
|
94
|
+
if (typeof value !== "object" || value === null) return value;
|
|
95
|
+
const toJSON = value.toJSON;
|
|
96
|
+
return typeof toJSON === "function" ? toJSON.call(value) : value;
|
|
97
|
+
}
|
|
98
|
+
function sanitizeStringLeaves(input, sanitize) {
|
|
99
|
+
const value = serializedForm(input);
|
|
100
|
+
if (typeof value === "string") return sanitize(value);
|
|
101
|
+
if (Array.isArray(value)) return value.map((item) => sanitizeStringLeaves(item, sanitize));
|
|
102
|
+
if (typeof value === "object" && value !== null) {
|
|
103
|
+
const copy = {};
|
|
104
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
105
|
+
copy[key] = sanitizeStringLeaves(entry, sanitize);
|
|
106
|
+
}
|
|
107
|
+
return copy;
|
|
108
|
+
}
|
|
109
|
+
return value;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export {
|
|
113
|
+
REDACTED_KEY_PLACEHOLDER,
|
|
114
|
+
sanitizeOutput,
|
|
115
|
+
sanitizeErrorDetails,
|
|
116
|
+
sanitizeStringLeaves
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=chunk-3665PYSK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/security/output-sanitizer.ts"],"sourcesContent":["/**\n * nexus-agents/security - Output Sanitizer\n *\n * Redacts API keys and tokens from CLI subprocess stdout/stderr\n * before the output is returned, logged, or traced.\n *\n * @module security/output-sanitizer\n * (Source: Issue #1597 — subprocess output scrubbing gap)\n */\n\nimport { redactCredentialShapes } from '../core/credential-patterns.js';\n\n/** Placeholder text that replaces redacted keys. */\nexport const REDACTED_KEY_PLACEHOLDER = '[REDACTED_KEY]';\n\n/**\n * Redacts known API key patterns from a string: the shared credential-shape\n * set (`core/credential-patterns`, #6753) and URL userinfo. Context rules\n * (Authorization headers, `password=`, query and JSON fields) are NOT applied\n * here — subprocess output is prose, where they misfire (`bearer\\s+` takes\n * \"the bearer of\"); they are the local\n * extension {@link sanitizeErrorDetails} adds for upstream error bodies.\n *\n * Designed to be called on subprocess stdout/stderr before the output\n * is returned to callers, written to logs, or included in trace data.\n *\n * @param text - Raw subprocess output\n * @param placeholder - Replacement placeholder (default: [REDACTED_KEY])\n * @returns The same text with API keys replaced by placeholder\n */\nexport function sanitizeOutput(\n text: string,\n placeholder: string = REDACTED_KEY_PLACEHOLDER\n): string {\n if (text === '') return text;\n\n return redactCredentialShapes(text, placeholder);\n}\n\n/**\n * Whether `text` is one JSON document. Every context-rule prefix starts with a\n * letter, and in a JSON document letters occur only inside string literals, so\n * this one test places every match inside a JSON string.\n */\nfunction isJsonDocument(text: string): boolean {\n if (!/^\\s*[[{\"]/.test(text)) return false;\n try {\n JSON.parse(text);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * End of a context value. Plain text keeps the pre-#7296 extent: the whole\n * non-whitespace run (`&`-bounded for a query value). Inside a JSON string the\n * value also ends at the unescaped `\"` that closes the string, and an escape is\n * consumed as an indivisible pair, so the redaction never splits one (#7296).\n */\nfunction contextValueEnd(text: string, start: number, query: boolean, json: boolean): number {\n let end = start;\n while (end < text.length) {\n const char = text[end] ?? '';\n if (/\\s/.test(char) || (query && char === '&')) break;\n if (json && char === '\"') break;\n if (json && char === '\\\\') end++;\n end++;\n }\n return Math.min(end, text.length);\n}\n\n/** `file:line` straight after a rule id's `secret:`, as `sarif-parser` builds finding ids. */\nconst SEMGREP_FINDING_LOCATION = /^[\\w./@+-]+:\\d+(?![\\w.])/;\n\n/**\n * A semgrep finding id (`semgrep:<rule>generic-secret:<file>:<line>`) rather than a\n * `generic-secret:` assignment. `start` indexes the `secret` keyword; `valueStart`\n * the character after its colon. The rule must be dotted/dashed identifier text and\n * the colon must be followed, without whitespace, by a `file:line` location.\n */\nfunction isSemgrepRuleId(text: string, start: number, valueStart: number): boolean {\n const scannerStart = text.lastIndexOf('semgrep:', start);\n if (scannerStart < 0) return false;\n const rule = text.slice(scannerStart, start);\n if (!/^semgrep:(?:[\\w.-]*[._-])?generic-$/i.test(rule)) return false;\n return SEMGREP_FINDING_LOCATION.test(text.slice(valueStart, valueStart + 4096));\n}\n\ninterface ContextRule {\n /** Matches the key and separator; named group `q` is an optional opening quote. */\n readonly prefixes: RegExp;\n readonly minimumLength: number;\n readonly query?: boolean;\n}\n\n/** Redact only value spans; scanning avoids regex stack growth on large outputs. */\nfunction redactContextValues(\n text: string,\n rule: ContextRule,\n placeholder: string,\n json: boolean\n): string {\n let result = '';\n let copiedUntil = 0;\n for (const match of text.matchAll(rule.prefixes)) {\n if (match.index < copiedUntil) continue;\n const quote = match.groups?.['q'] ?? '';\n const keyEnd = match.index + match[0].length - quote.length;\n if (match[0].toLowerCase() === 'secret:' && isSemgrepRuleId(text, match.index, keyEnd)) {\n continue;\n }\n // Plain text: the quote is part of the value, as before #7296. JSON: an escaped\n // or single quote opens the value; a bare `\"` closes the string and is never taken.\n const start = json && quote !== '\"' ? keyEnd + quote.length : keyEnd;\n const end = contextValueEnd(text, start, rule.query === true, json);\n if (end - start < rule.minimumLength) continue;\n result += text.slice(copiedUntil, start) + placeholder;\n copiedUntil = end;\n }\n return result + text.slice(copiedUntil);\n}\n\n// Bearer and Basic stay separate passes, as before #7296: a value one consumes can hold the other.\nconst BEARER_HEADER_RULE: ContextRule = {\n prefixes: /authorization:\\s*bearer\\s+(?<q>\\\\?[\"'])?/gi,\n minimumLength: 1,\n};\nconst BASIC_HEADER_RULE: ContextRule = {\n prefixes: /authorization:\\s*basic\\s+(?<q>\\\\?[\"'])?/gi,\n minimumLength: 1,\n};\nconst ASSIGNMENT_RULE: ContextRule = {\n prefixes: /\\b(?:password|passwd|secret)\\s*[=:]\\s*(?<q>\\\\?[\"'])?/gi,\n minimumLength: 4,\n};\nconst QUERY_RULE: ContextRule = {\n prefixes:\n /[?&](?:api[_-]?key|token|access[_-]?token|secret|password|prompt|system_prompt|user_prompt)=/gi,\n minimumLength: 1,\n query: true,\n};\n\n/**\n * Redacts credentials (API keys, authorization headers, Bearer tokens, URL credentials,\n * and sensitive JSON fields) from error messages and response bodies.\n *\n * Designed to be called on upstream API error representations before they are\n * attached to error envelopes, logged, or returned to callers.\n *\n * @param text - Raw error message or serialized error body\n * @param apiKey - Optional configured API key to redact by exact match\n * @returns The sanitized text with credentials redacted\n */\nexport function sanitizeErrorDetails(\n text: string,\n apiKey?: string,\n placeholder: string = REDACTED_KEY_PLACEHOLDER\n): string {\n if (text === '') return '';\n\n let result = text;\n if (apiKey !== undefined && apiKey.trim() !== '') {\n result = result.replaceAll(apiKey.trim(), placeholder);\n }\n\n // Redact known key patterns and URL credentials (user:pass@ / token@)\n result = sanitizeOutput(result, placeholder);\n\n // Plain text keeps the pre-#7296 extents; inside a JSON document a value also\n // stops at its string's closing quote, so the output still parses (#7296).\n const json = isJsonDocument(result);\n result = redactContextValues(result, BEARER_HEADER_RULE, placeholder, json);\n result = redactContextValues(result, BASIC_HEADER_RULE, placeholder, json);\n // The token class excludes quotes and backslashes, and `\\s` cannot leave a JSON string.\n result = result.replace(/(bearer\\s+)[A-Za-z0-9._~+/-]+=*/gi, `$1${placeholder}`);\n\n // Redact plain text assignments like password=... or secret: ...\n result = redactContextValues(result, ASSIGNMENT_RULE, placeholder, json);\n\n // Redact sensitive query parameters in URLs or logs (?api_key=..., &token=..., &prompt=...)\n result = redactContextValues(result, QUERY_RULE, placeholder, json);\n\n // Redact sensitive JSON keys: \"api_key\": \"...\", \"token\": \"...\", \"prompt\": \"...\", etc.\n result = result.replace(\n /\"(api[_-]?key|access[_-]?token|token|secret|password|prompt|system_prompt|user_prompt)\"\\s*:\\s*\"(?:[^\"\\\\]|\\\\.)*\"/gi,\n `\"$1\": \"${placeholder}\"`\n );\n\n return result;\n}\n\n/** `value.toJSON()` when it has one (a `Date`), as `JSON.stringify` would; else `value`. */\nfunction serializedForm(value: unknown): unknown {\n if (typeof value !== 'object' || value === null) return value;\n const toJSON: unknown = (value as { toJSON?: unknown }).toJSON;\n return typeof toJSON === 'function' ? (toJSON as () => unknown).call(value) : value;\n}\n\n/**\n * `value` with `sanitize` applied to every string LEAF. A `toJSON` object (a\n * `Date`) is taken in its serialized form first, as `JSON.stringify` would;\n * arrays are mapped and objects copied from their own enumerable entries.\n * Keys, numbers, booleans and `null` are untouched, so the structure a JSON\n * reader sees survives. Returns a copy — the input is not mutated.\n */\nexport function sanitizeStringLeaves(input: unknown, sanitize: (text: string) => string): unknown {\n const value = serializedForm(input);\n if (typeof value === 'string') return sanitize(value);\n if (Array.isArray(value)) return value.map((item) => sanitizeStringLeaves(item, sanitize));\n if (typeof value === 'object' && value !== null) {\n const copy: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n copy[key] = sanitizeStringLeaves(entry, sanitize);\n }\n return copy;\n }\n return value;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
getModelPricing,
|
|
12
12
|
resolveCliCostPer1M,
|
|
13
13
|
resolveCliModelName
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-XT4BDCNW.js";
|
|
15
15
|
import {
|
|
16
16
|
DEFAULT_MODEL_PER_CLI,
|
|
17
17
|
buildInTreeEntries,
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
pricingSourceOf,
|
|
22
22
|
resolveModelIdentitySync,
|
|
23
23
|
unpricedCliCostPer1M
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-53J7YO4O.js";
|
|
25
25
|
import {
|
|
26
26
|
ensureLearningDir,
|
|
27
27
|
getDecisionCostFile,
|
|
@@ -4717,7 +4717,7 @@ function adapterReadiness(adapter, options) {
|
|
|
4717
4717
|
const ceiling = resolveClassGuardMs("interactive");
|
|
4718
4718
|
const requested = options.timeoutMs ?? ceiling;
|
|
4719
4719
|
const timeoutMs = Number.isFinite(requested) && requested > 0 ? Math.min(requested, ceiling) : ceiling;
|
|
4720
|
-
const flight = import("./cli-readiness-
|
|
4720
|
+
const flight = import("./cli-readiness-7JCRT2EI.js").then(({ probeServes }) => probeServes(adapter, timeoutMs)).finally(() => readinessFlights.delete(adapter));
|
|
4721
4721
|
readinessFlights.set(adapter, flight);
|
|
4722
4722
|
return flight;
|
|
4723
4723
|
}
|
|
@@ -4727,7 +4727,7 @@ async function servesListedModel(adapter, modelId, cli) {
|
|
|
4727
4727
|
const models = await adapter.listModels();
|
|
4728
4728
|
if (models.length === 0) return "unknown";
|
|
4729
4729
|
const requestedKey = canonicalModelKey(modelId);
|
|
4730
|
-
const findCanonicalModel = cli === "codex" ? (await import("./model-config-helpers-
|
|
4730
|
+
const findCanonicalModel = cli === "codex" ? (await import("./model-config-helpers-7ZDR3P4Y.js")).findCanonicalModel : void 0;
|
|
4731
4731
|
const requestedEntry = requestedKey === null ? findCanonicalModel?.("codex", modelId) : void 0;
|
|
4732
4732
|
const listed = models.some((model) => {
|
|
4733
4733
|
const listedEntry = findCanonicalModel?.("codex", model.id);
|
|
@@ -6402,7 +6402,7 @@ var ModelToCliAdapter = class {
|
|
|
6402
6402
|
}
|
|
6403
6403
|
async execute(task, options) {
|
|
6404
6404
|
const gatewayArm = this.gatewayArmField().gatewayArm;
|
|
6405
|
-
const breaker = gatewayArm !== void 0 && this.modelAdapter.providerId === `cli-${this.name}` ? (await import("./cli-circuit-breaker-
|
|
6405
|
+
const breaker = gatewayArm !== void 0 && this.modelAdapter.providerId === `cli-${this.name}` ? (await import("./cli-circuit-breaker-JVZ5PU4B.js")).getDefaultCliCircuitBreakerRegistry().getArmBreaker(breakerKeys.forArm({ name: this.name, gatewayArm })) : void 0;
|
|
6406
6406
|
const result = await this.modelAdapter.complete(this.toCompletionRequest(task, options));
|
|
6407
6407
|
if (!result.ok) {
|
|
6408
6408
|
const cliError = this.toCliError(result.error);
|
|
@@ -17618,7 +17618,7 @@ var CompositeRouter = class _CompositeRouter {
|
|
|
17618
17618
|
*/
|
|
17619
17619
|
async consultUnifiedContext(task) {
|
|
17620
17620
|
try {
|
|
17621
|
-
const { getContextForTask, inferTaskCategory } = await import("./context-retriever-
|
|
17621
|
+
const { getContextForTask, inferTaskCategory } = await import("./context-retriever-R73UHFWI.js");
|
|
17622
17622
|
const ctx = await getContextForTask({
|
|
17623
17623
|
task: task.content,
|
|
17624
17624
|
category: inferTaskCategory(task.content),
|
|
@@ -19295,4 +19295,4 @@ export {
|
|
|
19295
19295
|
AgentCapability,
|
|
19296
19296
|
OrchestratorError
|
|
19297
19297
|
};
|
|
19298
|
-
//# sourceMappingURL=chunk-
|
|
19298
|
+
//# sourceMappingURL=chunk-3DTEV3ZW.js.map
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
loadPapersRegistry,
|
|
5
5
|
loadTechniquesRegistry,
|
|
6
6
|
savePapersRegistry
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-4UNCRRJP.js";
|
|
8
8
|
import {
|
|
9
9
|
resolveToken
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-OWRB3X7N.js";
|
|
11
11
|
import {
|
|
12
12
|
getTsMorph
|
|
13
13
|
} from "./chunk-W654ME6B.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
rankedItemTrustTier,
|
|
19
19
|
trustTierLabel,
|
|
20
20
|
withoutUntrustedMemory
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-P7UYXTBL.js";
|
|
22
22
|
import {
|
|
23
23
|
extractSystemPrompt,
|
|
24
24
|
generateCacheKey,
|
|
@@ -41,7 +41,7 @@ import {
|
|
|
41
41
|
sigmoidConfidence,
|
|
42
42
|
tokenizeFiltered,
|
|
43
43
|
truncateSentence
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-3DTEV3ZW.js";
|
|
45
45
|
import {
|
|
46
46
|
ensureLearningDir,
|
|
47
47
|
getRulesFile
|
|
@@ -4296,4 +4296,4 @@ export {
|
|
|
4296
4296
|
DEFAULT_CONTEXT_BUDGET_TOKENS,
|
|
4297
4297
|
getContextPromptPrefix
|
|
4298
4298
|
};
|
|
4299
|
-
//# sourceMappingURL=chunk-
|
|
4299
|
+
//# sourceMappingURL=chunk-442TR7T5.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getErrorMessage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3DTEV3ZW.js";
|
|
4
4
|
|
|
5
5
|
// src/cli/setup-config.ts
|
|
6
6
|
import { copyFileSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
@@ -82,4 +82,4 @@ function ensureBackup(outputPath) {
|
|
|
82
82
|
export {
|
|
83
83
|
runConfigInitSync
|
|
84
84
|
};
|
|
85
|
-
//# sourceMappingURL=chunk-
|
|
85
|
+
//# sourceMappingURL=chunk-4S7H76GJ.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
err,
|
|
3
3
|
getErrorMessage,
|
|
4
4
|
ok
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-3DTEV3ZW.js";
|
|
6
6
|
import {
|
|
7
7
|
createLogger
|
|
8
8
|
} from "./chunk-GR6WCJWY.js";
|
|
@@ -285,4 +285,4 @@ export {
|
|
|
285
285
|
ScmError,
|
|
286
286
|
GitHubProvider
|
|
287
287
|
};
|
|
288
|
-
//# sourceMappingURL=chunk-
|
|
288
|
+
//# sourceMappingURL=chunk-4TIN5SKQ.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
getErrorMessage,
|
|
6
6
|
ok,
|
|
7
7
|
resolveInsideRoot
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-3DTEV3ZW.js";
|
|
9
9
|
import {
|
|
10
10
|
createLogger
|
|
11
11
|
} from "./chunk-GR6WCJWY.js";
|
|
@@ -213,4 +213,4 @@ export {
|
|
|
213
213
|
loadPapersRegistry,
|
|
214
214
|
savePapersRegistry
|
|
215
215
|
};
|
|
216
|
-
//# sourceMappingURL=chunk-
|
|
216
|
+
//# sourceMappingURL=chunk-4UNCRRJP.js.map
|
|
@@ -1645,7 +1645,7 @@ function setDefaultRegistry(registry) {
|
|
|
1645
1645
|
}
|
|
1646
1646
|
async function reloadDefaultRegistry() {
|
|
1647
1647
|
globalRegistry = buildDefaultRegistry();
|
|
1648
|
-
const { resetGlobalRegistry } = await import("./unified-registry-
|
|
1648
|
+
const { resetGlobalRegistry } = await import("./unified-registry-TLEJ4EIA.js");
|
|
1649
1649
|
resetGlobalRegistry();
|
|
1650
1650
|
return globalRegistry;
|
|
1651
1651
|
}
|
|
@@ -1674,4 +1674,4 @@ export {
|
|
|
1674
1674
|
setDefaultRegistry,
|
|
1675
1675
|
reloadDefaultRegistry
|
|
1676
1676
|
};
|
|
1677
|
-
//# sourceMappingURL=chunk-
|
|
1677
|
+
//# sourceMappingURL=chunk-53J7YO4O.js.map
|