@blogic-cz/agent-tools 1.6.14 → 1.6.15

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;AAK5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAM/D,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;AA66FF,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,CA+XrF;AAQD,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,UAt1GD,SAAS,UAAU,UAAU,KAAK,IAs1GM,CAAC;AAE5E,oDAAoD;AACpD,eAAO,MAAM,aAAa,YAx1GC,MAAM,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAw1GjB,CAAC;AAExD,yEAAyE;AACzE,eAAO,MAAM,aAAa,aA11GE,MAAM,KAAK,OA01GgB,CAAC;AAExD,yDAAyD;AACzD,eAAO,MAAM,aAAa,aA51GE,MAAM,KAAK,OA41GgB,CAAC;AAExD,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,YA91GC,MAAM,KAAK,OA81G0B,CAAC;AAE1E,iDAAiD;AACjD,eAAO,MAAM,iBAAiB,YAh2GC,MAAM,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAg2Gf,CAAC;AAEhE,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,YAl2GC,MAAM,KAAK,OAk2GsB,CAAC;AAElE,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,YAp2GC,MAAM,KAAK,MAAM,GAAG,IAo2Ga,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;AAK5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAM/D,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;AA0+FF,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,CA+XrF;AAQD,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,UAn5GD,SAAS,UAAU,UAAU,KAAK,IAm5GM,CAAC;AAE5E,oDAAoD;AACpD,eAAO,MAAM,aAAa,YAr5GC,MAAM,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAq5GjB,CAAC;AAExD,yEAAyE;AACzE,eAAO,MAAM,aAAa,aAv5GE,MAAM,KAAK,OAu5GgB,CAAC;AAExD,yDAAyD;AACzD,eAAO,MAAM,aAAa,aAz5GE,MAAM,KAAK,OAy5GgB,CAAC;AAExD,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,YA35GC,MAAM,KAAK,OA25G0B,CAAC;AAE1E,iDAAiD;AACjD,eAAO,MAAM,iBAAiB,YA75GC,MAAM,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IA65Gf,CAAC;AAEhE,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,YA/5GC,MAAM,KAAK,OA+5GsB,CAAC;AAElE,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,YAj6GC,MAAM,KAAK,MAAM,GAAG,IAi6Ga,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blogic-cz/agent-tools",
3
- "version": "1.6.14",
3
+ "version": "1.6.15",
4
4
  "description": "CLI tools for AI coding agent workflows — GitHub, database, Kubernetes, Azure platform, Azure DevOps, logs, sessions, and audit",
5
5
  "keywords": [
6
6
  "agent",
@@ -1512,6 +1512,20 @@ function isJqObjectConstruction(argv: string[]): boolean {
1512
1512
  if (argv[index] === "--") index++;
1513
1513
  const filter = argv[index] ?? "";
1514
1514
  if (argv.slice(index + 1).some((arg) => arg.startsWith("-"))) return false;
1515
+ // ponytail: one object-map level and one literal contains selector; no jq evaluator.
1516
+ const field = String.raw`\.[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*`;
1517
+ const key = String.raw`[A-Za-z_][A-Za-z0-9_]*`;
1518
+ const flatEntry = String.raw`${key}(?:\s*:\s*${field})?`;
1519
+ const flatObject = String.raw`\{\s*${flatEntry}(?:\s*,\s*${flatEntry})*\s*\}`;
1520
+ const mapped = String.raw`${field}\s*\|\s*map\(\s*${flatObject}\s*\)`;
1521
+ const value = String.raw`(?:${field}|${mapped}|\(\s*${mapped}\s*\))`;
1522
+ const entry = String.raw`${key}(?:\s*:\s*${value})?`;
1523
+ const object = String.raw`\{\s*${entry}(?:\s*,\s*${entry})*\s*\}`;
1524
+ // JSON string escapes exclude jq interpolation, which starts with \(.
1525
+ const string = String.raw`"(?:[^"\\\x00-\x1f]|\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4}))*"`;
1526
+ const selector = String.raw`select\(\s*${field}\s*\|\s*contains\(\s*${string}\s*\)\s*\)`;
1527
+ const traversal = String.raw`${field}(?:\[\])?\s*\|\s*(?:${selector}\s*\|\s*)?`;
1528
+ if (new RegExp(String.raw`^(?:${traversal})?${object}$`).test(filter)) return true;
1515
1529
  const expression = filter
1516
1530
  .replace(/\.[A-Za-z_][A-Za-z0-9_.-]*/g, "FIELD")
1517
1531
  .replace(/\b[A-Za-z_][A-Za-z0-9_-]*\s*:/g, ":");
@@ -2004,6 +2018,51 @@ function isPassiveTextCommand(argv: string[]): boolean {
2004
2018
  );
2005
2019
  }
2006
2020
 
2021
+ /** Native data consumers only; ordinary path, expansion and redirect checks still apply. */
2022
+ function isReadonlyJqConsumer(argv: string[]): boolean {
2023
+ if (isPassiveTextCommand(argv)) return true;
2024
+ const name = argv[0]?.split("/").at(-1) ?? "";
2025
+ if (name === "sort")
2026
+ return argv
2027
+ .slice(1)
2028
+ .every(
2029
+ (arg) =>
2030
+ !arg.startsWith("-") || arg === "-" || arg === "--" || /^-[bdfgMhnRruVszcC]+$/.test(arg),
2031
+ );
2032
+ if (name === "uniq") return isReadonlyUniqConsumer(argv);
2033
+ if (["cat", "wc"].includes(name)) return isProvedCwdSubprocessRole(argv);
2034
+ return name === "tr";
2035
+ }
2036
+
2037
+ /** uniq INPUT is a read; uniq INPUT OUTPUT is a write and cannot acquire this proof. */
2038
+ function isReadonlyUniqConsumer(argv: string[]): boolean {
2039
+ let operands = 0;
2040
+ let options = true;
2041
+ for (let index = 1; index < argv.length; index++) {
2042
+ const arg = argv[index] ?? "";
2043
+ if (options && arg === "--") {
2044
+ options = false;
2045
+ continue;
2046
+ }
2047
+ if (options) {
2048
+ if (/^-[cduiz]+$|^--(?:count|repeated|unique|ignore-case|zero-terminated)$/.test(arg))
2049
+ continue;
2050
+ const short = /^-[fsw]([0-9]*)$/.exec(arg);
2051
+ const long = /^--(?:skip-fields|skip-chars|check-chars)(?:=(.*))?$/.exec(arg);
2052
+ if (short || long) {
2053
+ const attached = short ? short[1] || undefined : long?.[1];
2054
+ const value = attached === undefined ? argv[++index] : attached;
2055
+ if (!/^[0-9]+$/.test(value ?? "")) return false;
2056
+ continue;
2057
+ }
2058
+ if (arg.startsWith("-") && arg !== "-") return false;
2059
+ }
2060
+ options = false;
2061
+ if (++operands > 1) return false;
2062
+ }
2063
+ return true;
2064
+ }
2065
+
2007
2066
  /** One print program with optional numeric or escaped-regex addresses; no callbacks. */
2008
2067
  function isReadonlySedPrint(argv: string[]): boolean {
2009
2068
  if (argv[0]?.split("/").at(-1) !== "sed") return false;
@@ -2178,8 +2237,10 @@ function hasEnvironmentRead(
2178
2237
  pipelines.some((pipeline) =>
2179
2238
  pipeline.some(
2180
2239
  (argv, index) =>
2181
- literalSqlArgumentIndex(argv) !== undefined &&
2182
- pipeline.slice(index + 1).some((consumer) => !isPassiveTextCommand(consumer)),
2240
+ (literalSqlArgumentIndex(argv) !== undefined &&
2241
+ pipeline.slice(index + 1).some((consumer) => !isPassiveTextCommand(consumer))) ||
2242
+ (isJqObjectConstruction(argv) &&
2243
+ pipeline.slice(index + 1).some((consumer) => !isReadonlyJqConsumer(consumer))),
2183
2244
  ),
2184
2245
  )
2185
2246
  )