@blogic-cz/agent-tools 1.14.0 → 1.14.1
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/credential-guard/location-operands.test.d.ts +2 -0
- package/dist/credential-guard/location-operands.test.d.ts.map +1 -0
- package/dist/credential-guard/registry.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/credential-guard/location-operands.test.ts +78 -0
- package/src/credential-guard/registry.ts +85 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"location-operands.test.d.ts","sourceRoot":"","sources":["../../src/credential-guard/location-operands.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/credential-guard/registry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/credential-guard/registry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/* eslint-disable eslint/no-template-curly-in-string -- Shell parameter syntax is literal test input. */
|
|
2
|
+
import { expect, it } from "vitest";
|
|
3
|
+
import { createCredentialGuard } from "./index";
|
|
4
|
+
|
|
5
|
+
const guard = createCredentialGuard();
|
|
6
|
+
const check = (command: string): void =>
|
|
7
|
+
guard.handleToolExecuteBefore({ tool: "Bash" }, { args: { command } });
|
|
8
|
+
|
|
9
|
+
it.each([
|
|
10
|
+
"tmutil isexcluded ~/op",
|
|
11
|
+
"tmutil addexclusion ~/op/worktrees",
|
|
12
|
+
"tmutil",
|
|
13
|
+
"tmutil version",
|
|
14
|
+
"tmutil help",
|
|
15
|
+
"tmutil listbackups",
|
|
16
|
+
"tmutil latestbackup",
|
|
17
|
+
"tmutil destinationinfo",
|
|
18
|
+
"tmutil status",
|
|
19
|
+
"tmutil currentphase",
|
|
20
|
+
"tmutil startbackup",
|
|
21
|
+
"tmutil unknown-subcommand public",
|
|
22
|
+
"sudo tmutil listbackups",
|
|
23
|
+
"tmutil listbackups | head",
|
|
24
|
+
'mdfind -onlyin "$HOME/o""p" -count x',
|
|
25
|
+
'for p in ~/projects ~/op; do tmutil isexcluded "$p"; done',
|
|
26
|
+
])("accepts declared location operands: %s", (command) => {
|
|
27
|
+
expect(() => check(command)).not.toThrow();
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it("keeps secret-source basenames as locations in declared path roles", () => {
|
|
31
|
+
for (const name of ["op", "bw", "pass", "security", "printenv"]) {
|
|
32
|
+
for (const command of [
|
|
33
|
+
`tmutil isexcluded ~/projects/${name}`,
|
|
34
|
+
`tmutil addexclusion -p ~/projects/${name}`,
|
|
35
|
+
`tmutil removeexclusion -v ~/projects/${name}`,
|
|
36
|
+
`tmutil compare -D 2 -I op ~/projects/${name} ~/other/${name}`,
|
|
37
|
+
`tmutil uniquesize ~/projects/${name}`,
|
|
38
|
+
`tmutil calculatedrift ~/projects/${name}`,
|
|
39
|
+
`mdfind -onlyin ~/projects/${name} -count x`,
|
|
40
|
+
]) {
|
|
41
|
+
expect(() => check(command)).not.toThrow();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it.each([
|
|
47
|
+
"mdfind -onlyin ~/op -count x",
|
|
48
|
+
"mdfind op",
|
|
49
|
+
"mdfind -name .env -attr password -0 -live -literal -interpret op",
|
|
50
|
+
])("keeps Spotlight query and attribute text as data: %s", (command) => {
|
|
51
|
+
expect(() => check(command)).not.toThrow();
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it.each([
|
|
55
|
+
["unknown-cli op read x", "secret-source"],
|
|
56
|
+
["unknown-cli /usr/local/bin/op read op://a/b", "secret-source"],
|
|
57
|
+
["unknown-cli ~/bin/op --account a item get x", "secret-source"],
|
|
58
|
+
["unknown-cli -e ~/op read x", "secret-source"],
|
|
59
|
+
["unknown-cli op", "secret-source"],
|
|
60
|
+
["op item get x", "secret-source"],
|
|
61
|
+
["op read op://a/b", "secret-source"],
|
|
62
|
+
["launchctl asuser 501 /usr/bin/printenv", "secret-source"],
|
|
63
|
+
["launchctl asuser 501 /usr/bin/security dump-keychain", "secret-source"],
|
|
64
|
+
["tmutil unknown-subcommand ~/op", "secret-source"],
|
|
65
|
+
["tmutil restore ~/.ssh/id_rsa /tmp/x", "sensitive-path"],
|
|
66
|
+
["tmutil isexcluded ~/.ssh/id_rsa", "sensitive-path"],
|
|
67
|
+
["tmutil addexclusion -p .env", "sensitive-path"],
|
|
68
|
+
["tmutil compare .env public", "sensitive-path"],
|
|
69
|
+
["tmutil isexcluded $(op read op://a/b)", "secret-source"],
|
|
70
|
+
['tmutil isexcluded "$UNKNOWN"', "opaque-path"],
|
|
71
|
+
["mdfind -onlyin ~/.ssh op", "sensitive-path"],
|
|
72
|
+
['mdfind -onlyin "$UNKNOWN" x', "opaque-path"],
|
|
73
|
+
["mdfind -onlyin", "opaque-path"],
|
|
74
|
+
["mdfind -onlyin ~/.ssh x", "sensitive-path"],
|
|
75
|
+
['mdfind "$(cat ~/.ssh/id_rsa)"', "sensitive-path"],
|
|
76
|
+
] as const)("refuses with the expected rule for %s", (command, rule) => {
|
|
77
|
+
expect(() => check(command)).toThrow(rule);
|
|
78
|
+
});
|
|
@@ -1906,6 +1906,91 @@ export const EXECUTABLES: readonly ExecutableEntry[] = [
|
|
|
1906
1906
|
semantics: "listing",
|
|
1907
1907
|
},
|
|
1908
1908
|
{ name: "basename", aliases: ["dirname"], operands: [data] },
|
|
1909
|
+
{
|
|
1910
|
+
name: "tmutil",
|
|
1911
|
+
operands: [path],
|
|
1912
|
+
subcommands: {
|
|
1913
|
+
...Object.fromEntries(
|
|
1914
|
+
[
|
|
1915
|
+
"setdestination",
|
|
1916
|
+
"destinationinfo",
|
|
1917
|
+
"setquota",
|
|
1918
|
+
"removedestination",
|
|
1919
|
+
"enable",
|
|
1920
|
+
"disable",
|
|
1921
|
+
"startbackup",
|
|
1922
|
+
"stopbackup",
|
|
1923
|
+
"verifychecksums",
|
|
1924
|
+
"restore",
|
|
1925
|
+
"delete",
|
|
1926
|
+
"deleteinprogress",
|
|
1927
|
+
"latestbackup",
|
|
1928
|
+
"listbackups",
|
|
1929
|
+
"machinedirectory",
|
|
1930
|
+
"inheritbackup",
|
|
1931
|
+
"associatedisk",
|
|
1932
|
+
"localsnapshot",
|
|
1933
|
+
"listlocalsnapshots",
|
|
1934
|
+
"listlocalsnapshotdates",
|
|
1935
|
+
"deletelocalsnapshots",
|
|
1936
|
+
"thinlocalsnapshots",
|
|
1937
|
+
"help",
|
|
1938
|
+
"version",
|
|
1939
|
+
"status",
|
|
1940
|
+
"currentphase",
|
|
1941
|
+
].map((name) => [
|
|
1942
|
+
name,
|
|
1943
|
+
{
|
|
1944
|
+
operands: [path],
|
|
1945
|
+
effect:
|
|
1946
|
+
name === "restore" ? unknown("unmodeled Time Machine restore operation") : "none",
|
|
1947
|
+
} satisfies Omit<ExecutableEntry, "name">,
|
|
1948
|
+
]),
|
|
1949
|
+
),
|
|
1950
|
+
isexcluded: { operands: [path], options: flags("-X"), effect: "none" },
|
|
1951
|
+
addexclusion: { operands: [path], options: flags("-p", "-v"), effect: "none" },
|
|
1952
|
+
removeexclusion: { operands: [path], options: flags("-p", "-v"), effect: "none" },
|
|
1953
|
+
compare: {
|
|
1954
|
+
operands: [path],
|
|
1955
|
+
options: {
|
|
1956
|
+
...flags(
|
|
1957
|
+
"-@",
|
|
1958
|
+
"-a",
|
|
1959
|
+
"-c",
|
|
1960
|
+
"-d",
|
|
1961
|
+
"-e",
|
|
1962
|
+
"-f",
|
|
1963
|
+
"-g",
|
|
1964
|
+
"-h",
|
|
1965
|
+
"-l",
|
|
1966
|
+
"-m",
|
|
1967
|
+
"-n",
|
|
1968
|
+
"-s",
|
|
1969
|
+
"-t",
|
|
1970
|
+
"-u",
|
|
1971
|
+
"-E",
|
|
1972
|
+
"-U",
|
|
1973
|
+
"-X",
|
|
1974
|
+
),
|
|
1975
|
+
"-D": arg(data),
|
|
1976
|
+
"-I": arg(data),
|
|
1977
|
+
},
|
|
1978
|
+
effect: "none",
|
|
1979
|
+
},
|
|
1980
|
+
uniquesize: { operands: [path], effect: "none" },
|
|
1981
|
+
calculatedrift: { operands: [path], effect: "none" },
|
|
1982
|
+
},
|
|
1983
|
+
},
|
|
1984
|
+
{
|
|
1985
|
+
name: "mdfind",
|
|
1986
|
+
operands: [data],
|
|
1987
|
+
options: {
|
|
1988
|
+
"-onlyin": arg(path),
|
|
1989
|
+
"-name": arg(data),
|
|
1990
|
+
"-attr": arg(data),
|
|
1991
|
+
...flags("-count", "-0", "-live", "-literal", "-interpret"),
|
|
1992
|
+
},
|
|
1993
|
+
},
|
|
1909
1994
|
{
|
|
1910
1995
|
name: "ls",
|
|
1911
1996
|
options: {
|