@remnic/core 9.69.61 → 9.69.63
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/access-admin-ops-surface.js +4 -4
- package/dist/access-authorization-probe.js +5 -5
- package/dist/access-boundary.js +4 -4
- package/dist/access-cli.js +20 -20
- package/dist/access-extraction-force-flush.js +4 -4
- package/dist/access-http-briefing.js +5 -5
- package/dist/access-http-query.js +4 -4
- package/dist/access-http.js +16 -16
- package/dist/access-identity-continuity-surface.js +4 -4
- package/dist/access-lcm-surface.js +4 -4
- package/dist/access-mcp.js +11 -11
- package/dist/access-namespace-preflight.js +4 -4
- package/dist/access-observe-write-surface.js +4 -4
- package/dist/access-operations-batch.js +5 -5
- package/dist/access-operations.js +10 -10
- package/dist/access-recall-concurrency.js +4 -4
- package/dist/access-recall-response.js +4 -4
- package/dist/access-recall-surface.js +4 -4
- package/dist/access-service.js +4 -4
- package/dist/access-surface-catalog.js +6 -6
- package/dist/{chunk-2C5Z7CWB.js → chunk-24TJ77TT.js} +2 -2
- package/dist/{chunk-LY3SDHMI.js → chunk-3MSMBVA3.js} +2 -2
- package/dist/{chunk-2L5DIVDU.js → chunk-4EEDRKRT.js} +2 -2
- package/dist/{chunk-WLZYGLJ4.js → chunk-5MA7ZLPD.js} +5 -7
- package/dist/chunk-5MA7ZLPD.js.map +1 -0
- package/dist/{chunk-XOLVM3AT.js → chunk-5WXJE5TV.js} +2 -2
- package/dist/{chunk-NLE6TSLG.js → chunk-BLVHDY2U.js} +5 -7
- package/dist/chunk-BLVHDY2U.js.map +1 -0
- package/dist/{chunk-4IFSMCRS.js → chunk-FEHVG4C4.js} +2 -2
- package/dist/{chunk-DC5CTLCZ.js → chunk-FTNV5476.js} +8 -8
- package/dist/{chunk-M4PHCEPU.js → chunk-LAEW4S43.js} +2 -2
- package/dist/{chunk-XN4CPSCN.js → chunk-LVGVXG22.js} +2 -2
- package/dist/{chunk-4P3ZBL5E.js → chunk-PZEXA6CM.js} +2 -2
- package/dist/{chunk-NORFVW2H.js → chunk-RA3C46VX.js} +2 -2
- package/dist/{chunk-YL2W6NUG.js → chunk-TPRBJF46.js} +3 -3
- package/dist/{chunk-TQAXUYUE.js → chunk-TQC6ELJO.js} +2 -2
- package/dist/{chunk-TM7S5UHD.js → chunk-U6HXB2OG.js} +2 -2
- package/dist/{chunk-WD32KTVI.js → chunk-VXGB766B.js} +3 -3
- package/dist/{chunk-ZNFHWNDM.js → chunk-W5UAB6EH.js} +3 -3
- package/dist/{chunk-ZJ6MEVTX.js → chunk-WAR75CRY.js} +8 -8
- package/dist/{chunk-KIOXEHWF.js → chunk-WKNWC46C.js} +2 -2
- package/dist/{chunk-K7S2IMGJ.js → chunk-ZDZJ2PG4.js} +309 -12
- package/dist/{chunk-K7S2IMGJ.js.map → chunk-ZDZJ2PG4.js.map} +1 -1
- package/dist/cli.js +17 -17
- package/dist/external-wiki-access.js +5 -5
- package/dist/extraction.js +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -20
- package/dist/memory-browse-operations.js +5 -5
- package/dist/model-registry.d.ts.map +1 -1
- package/dist/model-registry.js +1 -1
- package/dist/orchestrator.js +20 -20
- package/dist/profiling.d.ts.map +1 -1
- package/dist/profiling.js +1 -1
- package/dist/recall-navigation-operations.js +5 -5
- package/dist/recall-navigation.js +4 -4
- package/dist/security/audit-memory-cli.d.ts.map +1 -1
- package/dist/security/audit-memory.d.ts +10 -0
- package/dist/security/audit-memory.d.ts.map +1 -1
- package/dist/security/injection-screen.d.ts +1 -2
- package/dist/security/injection-screen.d.ts.map +1 -1
- package/dist/summarizer.js +2 -2
- package/dist/support-passport/index.js +7 -7
- package/package.json +12 -2
- package/src/index.ts +1 -1
- package/src/model-registry.test.ts +22 -1
- package/src/model-registry.ts +7 -6
- package/src/profiling.test.ts +20 -1
- package/src/profiling.ts +7 -7
- package/src/security/audit-memory-cli.test.ts +90 -0
- package/src/security/audit-memory-cli.ts +7 -0
- package/src/security/audit-memory.ts +14 -0
- package/src/security/injection-screen.test.ts +245 -0
- package/src/security/injection-screen.ts +341 -11
- package/dist/chunk-NLE6TSLG.js.map +0 -1
- package/dist/chunk-WLZYGLJ4.js.map +0 -1
- /package/dist/{chunk-2C5Z7CWB.js.map → chunk-24TJ77TT.js.map} +0 -0
- /package/dist/{chunk-LY3SDHMI.js.map → chunk-3MSMBVA3.js.map} +0 -0
- /package/dist/{chunk-2L5DIVDU.js.map → chunk-4EEDRKRT.js.map} +0 -0
- /package/dist/{chunk-XOLVM3AT.js.map → chunk-5WXJE5TV.js.map} +0 -0
- /package/dist/{chunk-4IFSMCRS.js.map → chunk-FEHVG4C4.js.map} +0 -0
- /package/dist/{chunk-DC5CTLCZ.js.map → chunk-FTNV5476.js.map} +0 -0
- /package/dist/{chunk-M4PHCEPU.js.map → chunk-LAEW4S43.js.map} +0 -0
- /package/dist/{chunk-XN4CPSCN.js.map → chunk-LVGVXG22.js.map} +0 -0
- /package/dist/{chunk-4P3ZBL5E.js.map → chunk-PZEXA6CM.js.map} +0 -0
- /package/dist/{chunk-NORFVW2H.js.map → chunk-RA3C46VX.js.map} +0 -0
- /package/dist/{chunk-YL2W6NUG.js.map → chunk-TPRBJF46.js.map} +0 -0
- /package/dist/{chunk-TQAXUYUE.js.map → chunk-TQC6ELJO.js.map} +0 -0
- /package/dist/{chunk-TM7S5UHD.js.map → chunk-U6HXB2OG.js.map} +0 -0
- /package/dist/{chunk-WD32KTVI.js.map → chunk-VXGB766B.js.map} +0 -0
- /package/dist/{chunk-ZNFHWNDM.js.map → chunk-W5UAB6EH.js.map} +0 -0
- /package/dist/{chunk-ZJ6MEVTX.js.map → chunk-WAR75CRY.js.map} +0 -0
- /package/dist/{chunk-KIOXEHWF.js.map → chunk-WKNWC46C.js.map} +0 -0
|
@@ -210,7 +210,7 @@ import {
|
|
|
210
210
|
import {
|
|
211
211
|
EngramAccessHttpServer,
|
|
212
212
|
MeetingsInputError
|
|
213
|
-
} from "./chunk-
|
|
213
|
+
} from "./chunk-FTNV5476.js";
|
|
214
214
|
import {
|
|
215
215
|
WearablesInputError
|
|
216
216
|
} from "./chunk-V7IZKJI3.js";
|
|
@@ -220,10 +220,10 @@ import {
|
|
|
220
220
|
loadChatSession,
|
|
221
221
|
processChatMessage,
|
|
222
222
|
sessionBelongsToPrincipal
|
|
223
|
-
} from "./chunk-
|
|
223
|
+
} from "./chunk-4EEDRKRT.js";
|
|
224
224
|
import {
|
|
225
225
|
EngramAccessService
|
|
226
|
-
} from "./chunk-
|
|
226
|
+
} from "./chunk-VXGB766B.js";
|
|
227
227
|
import {
|
|
228
228
|
WorkStorage
|
|
229
229
|
} from "./chunk-MPC7TYTZ.js";
|
|
@@ -3075,10 +3075,282 @@ var RESPONSE_CONTROL_PATTERNS = [
|
|
|
3075
3075
|
/\breplace[ \t]{1,8}(?:normal|default|your|the|its|all)?[ \t]{0,8}(?:behaviou?r|responses?|answers?|repl(?:y|ies)|output)\b/i,
|
|
3076
3076
|
/\b(?:literal|exact|verbatim)[ \t]{1,8}(?:response|answer|reply|marker|string|output|phrase|token)\b/i
|
|
3077
3077
|
];
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3078
|
+
var RESPONSE_CONTROL_CORROBORATORS = [
|
|
3079
|
+
/\bCANARY\b/i,
|
|
3080
|
+
/https?:\/\//i,
|
|
3081
|
+
/\b[0-9a-f]{8,}\b/i,
|
|
3082
|
+
/\b[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\b/,
|
|
3083
|
+
// Naming the emission as a phrase/marker/token is a payload cue: ordinary
|
|
3084
|
+
// prose names a field ("the request id"), not "the phrase".
|
|
3085
|
+
/\b(?:the|this|that|following)[ \t]{1,8}(?:phrase|marker|token|string|sequence|literal|codeword|passphrase)\b/i,
|
|
3086
|
+
// Verbatim control over the wording, not the content.
|
|
3087
|
+
/\b(?:literal(?:ly)?|verbatim|word[- ]for[- ]word|exactly[ \t]{1,8}(?:this|that|as)|character[- ]for[- ]character)\b/i,
|
|
3088
|
+
/\bno[ \t]{1,8}(?:explanation|commentary|preamble|deviation|other[ \t]{1,8}text)\b/i,
|
|
3089
|
+
/\b(?:only|nothing[ \t]{1,8}else|and[ \t]{1,8}nothing)\b[^\n]{0,30}\b(?:answers?|responses?|repl(?:y|ies)|output|say|said)\b/i,
|
|
3090
|
+
// Persistence across turns: an ordinary fact does not legislate later turns.
|
|
3091
|
+
/\b(?:remember|persist|store[ \t]{1,8}this|retain[ \t]{1,8}this)\b/i,
|
|
3092
|
+
/\bany[ \t]{1,8}(?:later|future|subsequent)\b/i,
|
|
3093
|
+
/\b(?:future|later|subsequent|following|upcoming)[ \t]{1,8}(?:answers?|responses?|repl(?:y|ies)|output|turns?|messages?|conversations?|sessions?)\b/i,
|
|
3094
|
+
/\b(?:across|between)[ \t]{1,8}(?:conversations|sessions|chats)\b/i,
|
|
3095
|
+
/\b(?:from[ \t]{1,8}now[ \t]{1,8}on|going[ \t]{1,8}forward|in[ \t]{1,8}(?:all|every)[ \t]{1,8}(?:future|later)[ \t]{1,8}(?:turns?|answers?|responses?))\b/i,
|
|
3096
|
+
/\b(?:whenever|every[ \t]{1,8}time|each[ \t]{1,8}time|any[ \t]{1,8}time)\b[^\n]{0,60}\b(?:asked|discussed|mentioned|queried|retrieved|recalled)\b/i,
|
|
3097
|
+
// The subject is the agent, not a system under discussion.
|
|
3098
|
+
/\byour[ \t]{1,8}(?:answers?|responses?|repl(?:y|ies)|output|behaviou?r|memory)\b/i,
|
|
3099
|
+
/\b(?:assistant|agent|model)(?:'s)?[ \t]{1,8}(?:answers?|responses?|repl(?:y|ies)|output|behaviou?r)\b/i,
|
|
3100
|
+
// A hidden activation phrase is itself the second signal.
|
|
3101
|
+
/\b(?:activation|trigger)[ \t]{1,8}(?:phrase|key|word|code)\b/i,
|
|
3102
|
+
/\b(?:approved|required|correct|canonical)[ \t]{1,8}(?:response|answer|reply)\b/i
|
|
3103
|
+
];
|
|
3104
|
+
var ORDINARY_CAPS_TOKENS = /* @__PURE__ */ new Set([
|
|
3105
|
+
"API",
|
|
3106
|
+
"HTTP",
|
|
3107
|
+
"HTTPS",
|
|
3108
|
+
"JSON",
|
|
3109
|
+
"XML",
|
|
3110
|
+
"HTML",
|
|
3111
|
+
"CSS",
|
|
3112
|
+
"CSV",
|
|
3113
|
+
"TSV",
|
|
3114
|
+
"YAML",
|
|
3115
|
+
"TOML",
|
|
3116
|
+
"SQL",
|
|
3117
|
+
"URL",
|
|
3118
|
+
"URI",
|
|
3119
|
+
"UUID",
|
|
3120
|
+
"ID",
|
|
3121
|
+
"IDS",
|
|
3122
|
+
"UTC",
|
|
3123
|
+
"ISO",
|
|
3124
|
+
"PDF",
|
|
3125
|
+
"PNG",
|
|
3126
|
+
"JPEG",
|
|
3127
|
+
"SVG",
|
|
3128
|
+
"TLS",
|
|
3129
|
+
"SSL",
|
|
3130
|
+
"SSH",
|
|
3131
|
+
"DNS",
|
|
3132
|
+
"TCP",
|
|
3133
|
+
"UDP",
|
|
3134
|
+
"IP",
|
|
3135
|
+
"CDN",
|
|
3136
|
+
"CORS",
|
|
3137
|
+
"CSRF",
|
|
3138
|
+
"JWT",
|
|
3139
|
+
"OAUTH",
|
|
3140
|
+
"REST",
|
|
3141
|
+
"GRPC",
|
|
3142
|
+
"RPC",
|
|
3143
|
+
"SDK",
|
|
3144
|
+
"CLI",
|
|
3145
|
+
"GUI",
|
|
3146
|
+
"OK",
|
|
3147
|
+
"YES",
|
|
3148
|
+
"NO",
|
|
3149
|
+
"TODO",
|
|
3150
|
+
"FAQ",
|
|
3151
|
+
"PR",
|
|
3152
|
+
"CI",
|
|
3153
|
+
"CD",
|
|
3154
|
+
"QA",
|
|
3155
|
+
"UX",
|
|
3156
|
+
"UI",
|
|
3157
|
+
"MIT",
|
|
3158
|
+
"GPL",
|
|
3159
|
+
"EU",
|
|
3160
|
+
"US",
|
|
3161
|
+
"AM",
|
|
3162
|
+
"PM",
|
|
3163
|
+
"FYI",
|
|
3164
|
+
"ETA",
|
|
3165
|
+
// Crypto, encoding, and spec vocabulary (trailing digits are stripped
|
|
3166
|
+
// before this lookup, so SHA256/SHA-256/UTF8/ISO8601/RFC3339 all reduce).
|
|
3167
|
+
"SHA",
|
|
3168
|
+
"MD",
|
|
3169
|
+
"HMAC",
|
|
3170
|
+
"AES",
|
|
3171
|
+
"RSA",
|
|
3172
|
+
"ECDSA",
|
|
3173
|
+
"PBKDF",
|
|
3174
|
+
"BCRYPT",
|
|
3175
|
+
"SCRYPT",
|
|
3176
|
+
"ARGON",
|
|
3177
|
+
"UTF",
|
|
3178
|
+
"ASCII",
|
|
3179
|
+
"BASE",
|
|
3180
|
+
"HEX",
|
|
3181
|
+
"CRC",
|
|
3182
|
+
"GZIP",
|
|
3183
|
+
"ZSTD",
|
|
3184
|
+
"RFC",
|
|
3185
|
+
"ANSI",
|
|
3186
|
+
"IEEE",
|
|
3187
|
+
"SMTP",
|
|
3188
|
+
"IMAP",
|
|
3189
|
+
"LDAP",
|
|
3190
|
+
"SAML",
|
|
3191
|
+
"OIDC",
|
|
3192
|
+
"SSO",
|
|
3193
|
+
"MFA",
|
|
3194
|
+
"TOTP",
|
|
3195
|
+
"ACL",
|
|
3196
|
+
"RBAC",
|
|
3197
|
+
"AWS",
|
|
3198
|
+
"GCP",
|
|
3199
|
+
"GPU",
|
|
3200
|
+
"CPU",
|
|
3201
|
+
"RAM",
|
|
3202
|
+
"SSD",
|
|
3203
|
+
"OS",
|
|
3204
|
+
"VM",
|
|
3205
|
+
"K8S",
|
|
3206
|
+
"NPM",
|
|
3207
|
+
"SEMVER",
|
|
3208
|
+
"GET",
|
|
3209
|
+
"POST",
|
|
3210
|
+
"PUT",
|
|
3211
|
+
"PATCH",
|
|
3212
|
+
"DELETE",
|
|
3213
|
+
"HEAD",
|
|
3214
|
+
"OPTIONS",
|
|
3215
|
+
"TRACE"
|
|
3216
|
+
]);
|
|
3217
|
+
var ORDINARY_CAPITALIZED_WORDS = /* @__PURE__ */ new Set([
|
|
3218
|
+
"Dear",
|
|
3219
|
+
"Hello",
|
|
3220
|
+
"Hi",
|
|
3221
|
+
"Greetings",
|
|
3222
|
+
"Please",
|
|
3223
|
+
"Thanks",
|
|
3224
|
+
"Thank",
|
|
3225
|
+
"Regards",
|
|
3226
|
+
"Sincerely",
|
|
3227
|
+
"Yes",
|
|
3228
|
+
"No",
|
|
3229
|
+
"True",
|
|
3230
|
+
"False",
|
|
3231
|
+
"Null",
|
|
3232
|
+
"None",
|
|
3233
|
+
"Error",
|
|
3234
|
+
"Warning",
|
|
3235
|
+
"Note",
|
|
3236
|
+
"Summary",
|
|
3237
|
+
"Subject",
|
|
3238
|
+
"Re",
|
|
3239
|
+
"Fwd",
|
|
3240
|
+
"Attention",
|
|
3241
|
+
"Notice",
|
|
3242
|
+
"Draft",
|
|
3243
|
+
"Monday",
|
|
3244
|
+
"Tuesday",
|
|
3245
|
+
"Wednesday",
|
|
3246
|
+
"Thursday",
|
|
3247
|
+
"Friday",
|
|
3248
|
+
"Saturday",
|
|
3249
|
+
"Sunday",
|
|
3250
|
+
"January",
|
|
3251
|
+
"February",
|
|
3252
|
+
"March",
|
|
3253
|
+
"April",
|
|
3254
|
+
"May",
|
|
3255
|
+
"June",
|
|
3256
|
+
"July",
|
|
3257
|
+
"August",
|
|
3258
|
+
"September",
|
|
3259
|
+
"October",
|
|
3260
|
+
"November",
|
|
3261
|
+
"December"
|
|
3262
|
+
]);
|
|
3263
|
+
var EMISSION_VERB_PRESENT = /\b(?:begin|start|end|include|contain|say|state|output|return|emit|produce|reply|respond|answer|replace|becomes?|is|are|be)\b[ \t]/i;
|
|
3264
|
+
var OPAQUE_EMISSION_TARGET = /\b(?:begin|start|end|include|contain|say|state|output|return|emit|produce|reply|respond|answer|replace|becomes?|is|are|be)\b[ \t]{1,8}(?:(?:with|by|exactly)[ \t]{1,8})?(?:normal[ \t]{1,8}behaviou?r[ \t]{1,8}with[ \t]{1,8})?/gi;
|
|
3265
|
+
var EMISSION_SLOT_VALUE = /(?:"([^"\n]{2,40})"|'([^'\n]{2,40})'|([A-Za-z][A-Za-z0-9_-]{1,39})\b)/y;
|
|
3266
|
+
var MAX_WHITESPACE_RUN_SCAN = 64;
|
|
3267
|
+
function lowercaseFollowsWhitespace(content, from) {
|
|
3268
|
+
const limit = Math.min(content.length, from + MAX_WHITESPACE_RUN_SCAN);
|
|
3269
|
+
let index = from;
|
|
3270
|
+
while (index < limit) {
|
|
3271
|
+
const code = content.charCodeAt(index);
|
|
3272
|
+
const whitespace = code === 32 || code >= 9 && code <= 13;
|
|
3273
|
+
if (!whitespace) return code >= 97 && code <= 122;
|
|
3274
|
+
index += 1;
|
|
3275
|
+
}
|
|
3276
|
+
return false;
|
|
3277
|
+
}
|
|
3278
|
+
function splitSentencesOutsideQuotes(content) {
|
|
3279
|
+
const sentences = [];
|
|
3280
|
+
const TOKEN = /["'.!?\n]/g;
|
|
3281
|
+
let start = 0;
|
|
3282
|
+
let quote;
|
|
3283
|
+
let match;
|
|
3284
|
+
while ((match = TOKEN.exec(content)) !== null) {
|
|
3285
|
+
const char = match[0];
|
|
3286
|
+
const index = match.index;
|
|
3287
|
+
if (quote !== void 0) {
|
|
3288
|
+
if (char === quote) quote = void 0;
|
|
3289
|
+
continue;
|
|
3290
|
+
}
|
|
3291
|
+
if (char === '"' || char === "'" && !/[A-Za-z0-9]/.test(content[index - 1] ?? " ")) {
|
|
3292
|
+
quote = char;
|
|
3293
|
+
continue;
|
|
3294
|
+
}
|
|
3295
|
+
const next = content[index + 1];
|
|
3296
|
+
const insideToken = char !== "\n" && next !== void 0 && !/\s/.test(next);
|
|
3297
|
+
const terminalUrlPunctuation = (char === "?" || char === "!") && lowercaseFollowsWhitespace(content, index + 1) && /:\/\/[^\s]*$/.test(content.slice(Math.max(0, index - 300), index));
|
|
3298
|
+
const newlineContinues = char === "\n" && /[:\-][ \t]*$/.test(content.slice(Math.max(0, index - 4), index));
|
|
3299
|
+
const endsUnit = !insideToken && !terminalUrlPunctuation && !newlineContinues && (char === "." || char === "!" || char === "?" || char === "\n");
|
|
3300
|
+
if (endsUnit) {
|
|
3301
|
+
if (index > start) sentences.push(content.slice(start, index));
|
|
3302
|
+
start = index + 1;
|
|
3303
|
+
}
|
|
3304
|
+
}
|
|
3305
|
+
if (start < content.length) sentences.push(content.slice(start));
|
|
3306
|
+
return sentences;
|
|
3307
|
+
}
|
|
3308
|
+
function reduceToken(token) {
|
|
3309
|
+
return token.replace(/[0-9]+$/, "");
|
|
3310
|
+
}
|
|
3311
|
+
function isOrdinaryToken(token) {
|
|
3312
|
+
const segments = token.split(/[-_]+/).filter((segment) => segment.length > 0);
|
|
3313
|
+
if (segments.length === 0) return true;
|
|
3314
|
+
if (segments.length > 1 && segments.every((segment) => /^[A-Z][a-z]+$/.test(segment))) return true;
|
|
3315
|
+
return segments.every((segment) => {
|
|
3316
|
+
if (/^[0-9]+$/.test(segment)) return true;
|
|
3317
|
+
const reduced = reduceToken(segment);
|
|
3318
|
+
if (ORDINARY_CAPS_TOKENS.has(segment) || ORDINARY_CAPS_TOKENS.has(reduced)) return true;
|
|
3319
|
+
return ORDINARY_CAPITALIZED_WORDS.has(segment);
|
|
3320
|
+
});
|
|
3321
|
+
}
|
|
3322
|
+
function hasOpaqueEmissionTarget(sentence) {
|
|
3323
|
+
OPAQUE_EMISSION_TARGET.lastIndex = 0;
|
|
3324
|
+
for (let verb = OPAQUE_EMISSION_TARGET.exec(sentence); verb !== null; verb = OPAQUE_EMISSION_TARGET.exec(sentence)) {
|
|
3325
|
+
EMISSION_SLOT_VALUE.lastIndex = verb.index + verb[0].length;
|
|
3326
|
+
const match = EMISSION_SLOT_VALUE.exec(sentence);
|
|
3327
|
+
if (!match) continue;
|
|
3328
|
+
const quoted = match[1] ?? match[2];
|
|
3329
|
+
if (quoted !== void 0) {
|
|
3330
|
+
const inner = quoted.trim();
|
|
3331
|
+
if (!/\s/.test(inner) && isOrdinaryToken(inner)) continue;
|
|
3332
|
+
return true;
|
|
3333
|
+
}
|
|
3334
|
+
const token = match[3];
|
|
3335
|
+
if (token === void 0) continue;
|
|
3336
|
+
if (/^[a-z]/.test(token)) continue;
|
|
3337
|
+
if (!isOrdinaryToken(token)) return true;
|
|
3338
|
+
}
|
|
3339
|
+
return false;
|
|
3340
|
+
}
|
|
3341
|
+
function findResponseControlDirective(content, profile = "default") {
|
|
3342
|
+
const directive = RESPONSE_CONTROL_PATTERNS.map(
|
|
3343
|
+
(pattern) => findingFor("response-control-directive", content, pattern)
|
|
3344
|
+
).find((finding) => finding !== void 0);
|
|
3345
|
+
if (!directive) return void 0;
|
|
3346
|
+
if (profile === "hardened") return directive;
|
|
3347
|
+
const anyCorroborator = RESPONSE_CONTROL_CORROBORATORS.some((pattern) => pattern.test(content));
|
|
3348
|
+
const anyEmissionVerb = !anyCorroborator ? EMISSION_VERB_PRESENT.test(content) : true;
|
|
3349
|
+
if (!anyCorroborator && !anyEmissionVerb) return void 0;
|
|
3350
|
+
for (const sentence of splitSentencesOutsideQuotes(content)) {
|
|
3351
|
+
if (!RESPONSE_CONTROL_PATTERNS.some((pattern) => pattern.test(sentence))) continue;
|
|
3352
|
+
if (anyCorroborator && RESPONSE_CONTROL_CORROBORATORS.some((pattern) => pattern.test(sentence))) return directive;
|
|
3353
|
+
if (hasOpaqueEmissionTarget(sentence)) return directive;
|
|
3082
3354
|
}
|
|
3083
3355
|
return void 0;
|
|
3084
3356
|
}
|
|
@@ -3100,7 +3372,16 @@ function findAuthorityEscalation(content) {
|
|
|
3100
3372
|
AUTHORITY_MANDATORY_DIRECTIVE_PATTERN
|
|
3101
3373
|
);
|
|
3102
3374
|
}
|
|
3103
|
-
|
|
3375
|
+
var INVISIBLE_FORMATTING = /[\u00ad\u200b-\u200f\u2060\u2028\u2029\ufeff]/g;
|
|
3376
|
+
var NON_ASCII_SPACE_LIKE = /[\f\v\u0085\u1680\u00a0\u2000-\u200a\u202f\u205f\u3000]/g;
|
|
3377
|
+
var ASCII_SPACE_RUN = /[ \t]{2,}/g;
|
|
3378
|
+
function normalizeForScreening(content) {
|
|
3379
|
+
const spaced = content.replace(NON_ASCII_SPACE_LIKE, " ").replace(INVISIBLE_FORMATTING, " ").replace(ASCII_SPACE_RUN, " ");
|
|
3380
|
+
const deleted = content.replace(INVISIBLE_FORMATTING, "").replace(NON_ASCII_SPACE_LIKE, " ").replace(ASCII_SPACE_RUN, " ");
|
|
3381
|
+
return spaced === deleted ? [spaced] : [spaced, deleted];
|
|
3382
|
+
}
|
|
3383
|
+
function screenCandidateFact(rawContent, profile = "default") {
|
|
3384
|
+
const variants = normalizeForScreening(rawContent);
|
|
3104
3385
|
const findings = [];
|
|
3105
3386
|
const rules = [
|
|
3106
3387
|
["imperative-to-agent", findImperativeToAgent],
|
|
@@ -3113,8 +3394,13 @@ function screenCandidateFact(content, profile = "default") {
|
|
|
3113
3394
|
["tool-routing-directive", findToolRoutingDirective]
|
|
3114
3395
|
];
|
|
3115
3396
|
for (const [rule, find] of rules) {
|
|
3116
|
-
const
|
|
3117
|
-
|
|
3397
|
+
for (const content of variants) {
|
|
3398
|
+
const finding = find(content, profile);
|
|
3399
|
+
if (finding) {
|
|
3400
|
+
findings.push({ rule, excerpt: finding.excerpt });
|
|
3401
|
+
break;
|
|
3402
|
+
}
|
|
3403
|
+
}
|
|
3118
3404
|
}
|
|
3119
3405
|
const score = findings.reduce((sum, finding) => sum + ruleWeight(finding.rule, profile), 0);
|
|
3120
3406
|
return { score, findings, quarantine: score >= INJECTION_SCREEN_THRESHOLD };
|
|
@@ -3231,6 +3517,10 @@ function writeBurstStats(groups) {
|
|
|
3231
3517
|
anomalousGroups
|
|
3232
3518
|
};
|
|
3233
3519
|
}
|
|
3520
|
+
function auditScreenProfile(config) {
|
|
3521
|
+
const capabilities = resolveSecurityCapabilities(config);
|
|
3522
|
+
return capabilities.injectionScreen ? capabilities.injectionScreenProfile : "default";
|
|
3523
|
+
}
|
|
3234
3524
|
async function auditMemoryStore(options) {
|
|
3235
3525
|
const since = parseSince(options.since);
|
|
3236
3526
|
const storage = options.storage;
|
|
@@ -3347,7 +3637,13 @@ function registerSecurityCommands(cmd, orchestrator) {
|
|
|
3347
3637
|
memoryDir: orchestrator.config.memoryDir,
|
|
3348
3638
|
storage: orchestrator.storage,
|
|
3349
3639
|
since: typeof options.since === "string" && options.since.trim().length > 0 ? options.since.trim() : void 0,
|
|
3350
|
-
quarantine: options.quarantine === true
|
|
3640
|
+
quarantine: options.quarantine === true,
|
|
3641
|
+
// Screen with the profile live ingestion uses, or a memory this
|
|
3642
|
+
// deployment would quarantine on write stays active once stored
|
|
3643
|
+
// (#3078). A deployment with the screen DISABLED keeps the previous
|
|
3644
|
+
// `default` weighting: the sweep must not be stricter than the
|
|
3645
|
+
// write path the operator configured.
|
|
3646
|
+
profile: auditScreenProfile(orchestrator.config)
|
|
3351
3647
|
});
|
|
3352
3648
|
if (options.json === true) {
|
|
3353
3649
|
console.log(JSON.stringify(report, null, 2));
|
|
@@ -9709,6 +10005,7 @@ export {
|
|
|
9709
10005
|
exportSkillBundles,
|
|
9710
10006
|
readSkillBundlesFromDir,
|
|
9711
10007
|
persistImportedSkills,
|
|
10008
|
+
auditScreenProfile,
|
|
9712
10009
|
auditMemoryStore,
|
|
9713
10010
|
formatAuditMemoryReport,
|
|
9714
10011
|
registerWearableConnector,
|
|
@@ -9834,4 +10131,4 @@ export {
|
|
|
9834
10131
|
listMemoryMarkdownFilePaths,
|
|
9835
10132
|
registerCli
|
|
9836
10133
|
};
|
|
9837
|
-
//# sourceMappingURL=chunk-
|
|
10134
|
+
//# sourceMappingURL=chunk-ZDZJ2PG4.js.map
|