@blogic-cz/agent-tools 1.5.5 → 1.5.7
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/credential-guard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAmB,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAM5E,8CAA8C;AAC9C,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC;AAQF,+CAA+C;AAC/C,MAAM,MAAM,eAAe,GAAG;IAC5B,uBAAuB,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3E,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjF,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACxD,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/credential-guard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAmB,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAM5E,8CAA8C;AAC9C,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC;AAQF,+CAA+C;AAC/C,MAAM,MAAM,eAAe,GAAG;IAC5B,uBAAuB,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3E,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjF,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACxD,CAAC;AA2qCF,6CAA6C;AAC7C,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAErE;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAEpE;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAEpE;AAMD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,eAAe,CAoPrF;AAQD,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,UAz8CD,SAAS,UAAU,UAAU,KAAK,IAy8CM,CAAC;AAE5E,oDAAoD;AACpD,eAAO,MAAM,aAAa,YA38CC,MAAM,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IA28CjB,CAAC;AAExD,yEAAyE;AACzE,eAAO,MAAM,aAAa,aA78CE,MAAM,KAAK,OA68CgB,CAAC;AAExD,yDAAyD;AACzD,eAAO,MAAM,aAAa,aA/8CE,MAAM,KAAK,OA+8CgB,CAAC;AAExD,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,YAj9CC,MAAM,KAAK,OAi9C0B,CAAC;AAE1E,iDAAiD;AACjD,eAAO,MAAM,iBAAiB,YAn9CC,MAAM,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAm9Cf,CAAC;AAEhE,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,YAr9CC,MAAM,KAAK,OAq9CsB,CAAC;AAElE,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,YAv9CC,MAAM,KAAK,MAAM,GAAG,IAu9Ca,CAAC"}
|
package/package.json
CHANGED
|
@@ -249,6 +249,26 @@ function getLeadingLiteralAssignments(
|
|
|
249
249
|
return assignments;
|
|
250
250
|
}
|
|
251
251
|
|
|
252
|
+
function isSafeHerdrTabCreate(argv: string[]): boolean {
|
|
253
|
+
if (argv[0] !== "herdr" || argv[1] !== "tab" || argv[2] !== "create") return false;
|
|
254
|
+
const seen = new Set<string>();
|
|
255
|
+
for (let index = 3; index < argv.length; index++) {
|
|
256
|
+
const arg = argv[index] ?? "";
|
|
257
|
+
const [option, ...attached] = arg.split("=");
|
|
258
|
+
if (option === "--focus" || option === "--no-focus") {
|
|
259
|
+
if (attached.length || seen.has("focus")) return false;
|
|
260
|
+
seen.add("focus");
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
if (!["--workspace", "--cwd", "--label"].includes(option ?? "") || seen.has(option ?? ""))
|
|
264
|
+
return false;
|
|
265
|
+
const value = attached.length ? attached.join("=") : argv[++index];
|
|
266
|
+
if (!value || (!attached.length && value.startsWith("--"))) return false;
|
|
267
|
+
seen.add(option ?? "");
|
|
268
|
+
}
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
|
|
252
272
|
function hasSafeLocalAssignmentCommands(
|
|
253
273
|
command: string,
|
|
254
274
|
assignments: Map<string, { value: string; end: number }>,
|
|
@@ -259,9 +279,14 @@ function hasSafeLocalAssignmentCommands(
|
|
|
259
279
|
return parsed.pipelines.flat().every((words) => {
|
|
260
280
|
const assignment = /^([A-Za-z_][A-Za-z0-9_]*)=([A-Za-z0-9_./-]+)$/.exec(words[0] ?? "");
|
|
261
281
|
if (assignment) {
|
|
262
|
-
return
|
|
282
|
+
return (
|
|
283
|
+
words.length === 1 &&
|
|
284
|
+
assignment[1] !== "IFS" &&
|
|
285
|
+
assignments.get(assignment[1] ?? "")?.value === assignment[2]
|
|
286
|
+
);
|
|
263
287
|
}
|
|
264
288
|
const argv = unwrapStaticCommand(words);
|
|
289
|
+
if (isSafeHerdrTabCreate(argv)) return true;
|
|
265
290
|
const name = argv[0]?.split("/").at(-1) ?? "";
|
|
266
291
|
if (name === "cd") return isNavigationOperand(argv, "LOCALVALUE");
|
|
267
292
|
if (name === "git") {
|
|
@@ -522,17 +547,38 @@ function isLiteralTextProducer(argv: string[]): boolean {
|
|
|
522
547
|
return isPassiveTextCommand(argv) && argv[0]?.split("/").at(-1) !== "head";
|
|
523
548
|
}
|
|
524
549
|
|
|
550
|
+
function awkProgramIndex(argv: string[]): number | undefined {
|
|
551
|
+
if (argv[0]?.split("/").at(-1) !== "awk") return undefined;
|
|
552
|
+
let index = 1;
|
|
553
|
+
while (index < argv.length) {
|
|
554
|
+
const arg = argv[index] ?? "";
|
|
555
|
+
if (arg === "--") return index + 1 < argv.length ? index + 1 : undefined;
|
|
556
|
+
if (arg === "-F") {
|
|
557
|
+
if (argv[index + 1] === undefined) return undefined;
|
|
558
|
+
index += 2;
|
|
559
|
+
continue;
|
|
560
|
+
}
|
|
561
|
+
if (arg.startsWith("-F") && arg.length > 2) {
|
|
562
|
+
index++;
|
|
563
|
+
continue;
|
|
564
|
+
}
|
|
565
|
+
if (arg.startsWith("-")) return undefined;
|
|
566
|
+
return index;
|
|
567
|
+
}
|
|
568
|
+
return undefined;
|
|
569
|
+
}
|
|
570
|
+
|
|
525
571
|
function isAwkExecution(argv: string[]): boolean {
|
|
526
572
|
if (argv[0]?.split("/").at(-1) !== "awk") return false;
|
|
527
|
-
// Only a literal inline program establishes passive behavior.
|
|
528
|
-
const
|
|
573
|
+
// Only a literal inline program with known-safe options establishes passive behavior.
|
|
574
|
+
const index = awkProgramIndex(argv);
|
|
575
|
+
const program = index === undefined ? undefined : argv[index];
|
|
529
576
|
return (
|
|
530
577
|
!program ||
|
|
531
|
-
program.startsWith("-") ||
|
|
532
578
|
/\b(?:system|getline|ENVIRON)\b|\||\b(?:print|printf)\b[^\n]*>|@(?:include|load)/.test(
|
|
533
579
|
program,
|
|
534
580
|
) ||
|
|
535
|
-
argv.slice(
|
|
581
|
+
argv.slice((index ?? -1) + 1).some((arg) => arg.startsWith("-"))
|
|
536
582
|
);
|
|
537
583
|
}
|
|
538
584
|
|