pushary 1.9.96 → 1.9.97
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/CHANGELOG.md +14 -0
- package/dist/{api-FPEL3PLH.js → api-WH3DLHJB.js} +10 -10
- package/dist/bin/pushary-bell-hook.js +26 -26
- package/dist/bin/pushary-bell.js +10 -10
- package/dist/bin/pushary-claude.js +27 -27
- package/dist/bin/pushary-clean.js +34 -34
- package/dist/bin/pushary-codex-bridge.js +21 -21
- package/dist/bin/pushary-codex-hook.js +32 -34
- package/dist/bin/pushary-codex-session.js +8 -8
- package/dist/bin/pushary-codex.js +14 -14
- package/dist/bin/pushary-connect.js +27 -27
- package/dist/bin/pushary-cowork.js +5 -5
- package/dist/bin/pushary-daemon.js +39 -39
- package/dist/bin/pushary-disconnect.js +26 -26
- package/dist/bin/pushary-display-hook.js +17 -17
- package/dist/bin/pushary-doctor.js +42 -42
- package/dist/bin/pushary-elicitation-hook.js +26 -26
- package/dist/bin/pushary-gemini-bridge.js +15 -15
- package/dist/bin/pushary-gemini-hook.js +28 -28
- package/dist/bin/pushary-hook.js +30 -30
- package/dist/bin/pushary-login.js +20 -20
- package/dist/bin/pushary-logout.js +25 -25
- package/dist/bin/pushary-mcp.js +11 -11
- package/dist/bin/pushary-mode.js +15 -15
- package/dist/bin/pushary-notification-hook.js +25 -25
- package/dist/bin/pushary-opencode-hook.js +27 -27
- package/dist/bin/pushary-permission-denied-hook.js +30 -30
- package/dist/bin/pushary-permission-hook.js +30 -30
- package/dist/bin/pushary-post-hook.js +25 -25
- package/dist/bin/pushary-prompt-hook.js +25 -25
- package/dist/bin/pushary-session-end-hook.js +27 -27
- package/dist/bin/pushary-session-start-hook.js +35 -35
- package/dist/bin/pushary-setup.js +48 -48
- package/dist/bin/pushary-stats.js +5 -5
- package/dist/bin/pushary-status.js +32 -32
- package/dist/bin/pushary-stop-hook.js +25 -25
- package/dist/bin/pushary-stopfailure-hook.js +25 -25
- package/dist/bin/pushary-suggestions.js +15 -15
- package/dist/bin/pushary-transcript-register.js +18 -18
- package/dist/bin/pushary-transcripts.js +26 -26
- package/dist/bin/pushary-upgrade.js +40 -40
- package/dist/bin/pushary-wait.js +15 -15
- package/dist/bin/pushary.js +7 -7
- package/dist/{chunk-AEOYYLXF.js → chunk-2ZAFA3XI.js} +3 -3
- package/dist/{chunk-T7X5MQ3H.js → chunk-32577NGL.js} +1 -1
- package/dist/{chunk-BDCFB4NV.js → chunk-4D4USO5K.js} +6 -6
- package/dist/{chunk-NGSJHUQN.js → chunk-5OLBO5EB.js} +1 -1
- package/dist/{chunk-WZADX5VO.js → chunk-5RNZP53C.js} +6 -6
- package/dist/{chunk-OQY4G7FS.js → chunk-5U63KUP3.js} +1 -1
- package/dist/{chunk-HOYWYQNC.js → chunk-5WOO44TA.js} +5 -5
- package/dist/{chunk-BKN5E4L5.js → chunk-5WYXFKZV.js} +1 -1
- package/dist/{chunk-3GPXHHBM.js → chunk-5YRDZE5F.js} +1 -1
- package/dist/{chunk-77HBRZJI.js → chunk-6CDA4R5L.js} +3 -3
- package/dist/{chunk-B75SIY5C.js → chunk-6RGQIKAC.js} +3 -3
- package/dist/{chunk-TZWK2BVY.js → chunk-APFQBVQW.js} +6 -6
- package/dist/{chunk-R2RCFCFW.js → chunk-AUZITE2H.js} +6 -6
- package/dist/{chunk-KG7GT7UW.js → chunk-CB2RYMAO.js} +1 -1
- package/dist/{chunk-QDS55ODM.js → chunk-CG3C2WL7.js} +11 -11
- package/dist/{chunk-6YG5PZZS.js → chunk-CMDIKFVL.js} +1 -1
- package/dist/{chunk-SARU6WNW.js → chunk-CP72YEEA.js} +1 -1
- package/dist/{chunk-V7EWOHNV.js → chunk-E5WUBHVH.js} +4 -4
- package/dist/{chunk-M7ZV5IPA.js → chunk-EAJT6RYP.js} +7 -7
- package/dist/{chunk-4BLNOWGZ.js → chunk-FZQSUS3R.js} +16 -15
- package/dist/{chunk-C4IKRLT4.js → chunk-GEA6ZV2P.js} +2 -2
- package/dist/{chunk-ARDQBF25.js → chunk-GN2L5CYF.js} +1 -1
- package/dist/{chunk-TTK2DLUS.js → chunk-GNFUPHPZ.js} +10 -10
- package/dist/{chunk-TVGOSEWS.js → chunk-HD7AURL6.js} +4 -4
- package/dist/{chunk-SISYAMDC.js → chunk-HWEEBVS7.js} +4 -4
- package/dist/{chunk-7CW3K3B5.js → chunk-HXUE6IIP.js} +5 -5
- package/dist/{chunk-6JZNZTGZ.js → chunk-IED5CTYP.js} +3 -3
- package/dist/{chunk-HY7G3PWJ.js → chunk-IFQKSIID.js} +3 -3
- package/dist/{chunk-VX27HJF6.js → chunk-JA6GCOW2.js} +7 -7
- package/dist/{chunk-2QFD5XGU.js → chunk-JR6FCHAQ.js} +3 -3
- package/dist/{chunk-YCYFREHD.js → chunk-KNVTKFDP.js} +2 -2
- package/dist/{chunk-PD2DWO4X.js → chunk-KYX7VBEE.js} +2 -2
- package/dist/{chunk-YGMSDYOH.js → chunk-KZTN6OXM.js} +6 -6
- package/dist/{chunk-KHGW7THQ.js → chunk-LKDAMWTZ.js} +4 -4
- package/dist/{chunk-DN3QW2TT.js → chunk-MFJFN4DA.js} +3 -3
- package/dist/{chunk-MSPHJNUL.js → chunk-MGYGWHG5.js} +1 -1
- package/dist/{chunk-2DF4TBGX.js → chunk-MYKZPTAL.js} +1 -1
- package/dist/{chunk-3QT3DMNX.js → chunk-NDJ7H2WF.js} +1 -1
- package/dist/{chunk-J3W32P43.js → chunk-NI3NSURQ.js} +1 -1
- package/dist/{chunk-JU3JYEUG.js → chunk-NTCVGJFC.js} +4 -4
- package/dist/{chunk-WVDPP7OQ.js → chunk-OBB6VTSG.js} +5 -5
- package/dist/{chunk-T2Z5ITWJ.js → chunk-ORVMA5KJ.js} +3 -3
- package/dist/{chunk-CTKJVVDL.js → chunk-OW4WEO56.js} +3 -3
- package/dist/{chunk-UFWRBHTV.js → chunk-QCEY7TSX.js} +3 -3
- package/dist/{chunk-M52UDSMQ.js → chunk-QP3OSLKU.js} +5 -5
- package/dist/{chunk-3QS2RCCZ.js → chunk-R7D3PH2M.js} +6 -6
- package/dist/{chunk-B4G4Q2AF.js → chunk-R7TVELKF.js} +1 -1
- package/dist/{chunk-CLN5W5QP.js → chunk-RILJLDKG.js} +5 -5
- package/dist/{chunk-WUYB3J3Q.js → chunk-RPY5XCGA.js} +2 -2
- package/dist/{chunk-EPFI6W2K.js → chunk-RRA6POT5.js} +1 -1
- package/dist/{chunk-XZHJVGR3.js → chunk-RSITUL2U.js} +2 -2
- package/dist/{chunk-TXDFQD2I.js → chunk-RZD7ULBJ.js} +1 -1
- package/dist/{chunk-LGJPT33C.js → chunk-SXX47FHL.js} +2 -2
- package/dist/{chunk-TQKVKV76.js → chunk-T35RHO3X.js} +5 -5
- package/dist/{chunk-VTFXPV4U.js → chunk-TKOL7DJH.js} +2 -2
- package/dist/{chunk-CQ3YV6QI.js → chunk-TSSV3NBD.js} +2 -2
- package/dist/{chunk-IVYKPYMH.js → chunk-TZE2S3XP.js} +3 -3
- package/dist/{chunk-PDRPVVZX.js → chunk-UAUADSJX.js} +2 -2
- package/dist/{chunk-GAZPL742.js → chunk-VAY5AJ6N.js} +4 -4
- package/dist/{chunk-SI2CJ2BB.js → chunk-VHOGSWUF.js} +3 -3
- package/dist/{chunk-OP2WJEPY.js → chunk-VPT3RDTO.js} +1 -1
- package/dist/{chunk-EMVK57K7.js → chunk-VVHNHETX.js} +2 -2
- package/dist/{chunk-TAMHTWQZ.js → chunk-VVP4CP4O.js} +10 -10
- package/dist/{chunk-3X3ALGMP.js → chunk-W3OTAHLV.js} +4 -4
- package/dist/{chunk-XLRPJHXN.js → chunk-W5IW7NZE.js} +1 -1
- package/dist/{chunk-OS32P4RZ.js → chunk-WOFHN2IZ.js} +291 -9
- package/dist/{chunk-JCYXG6LQ.js → chunk-X22LLKBY.js} +3 -3
- package/dist/{chunk-CRJDKGEF.js → chunk-Z6O6CDTP.js} +5 -5
- package/dist/{chunk-XLM2JZBE.js → chunk-ZDIQPYM2.js} +1 -1
- package/dist/{chunk-N2KK2NSY.js → chunk-ZFUSWR2P.js} +2 -2
- package/dist/{codex-app-cards-switch-7YTDIMCX.js → codex-app-cards-switch-DFZK6GPW.js} +11 -11
- package/dist/{codex-desktop-launch-CICLFWQX.js → codex-desktop-launch-7QGN7SL7.js} +1 -1
- package/dist/{codex-session-launch-KW7VUPAH.js → codex-session-launch-OWMNCYAH.js} +18 -18
- package/dist/{config-632JSNBM.js → config-ITPE5M6M.js} +3 -3
- package/dist/{global-upgrade-BMCLOI2P.js → global-upgrade-PYEFLMJA.js} +10 -10
- package/dist/{identity-UCVTGQHM.js → identity-WTYTOLG3.js} +4 -4
- package/dist/{live-capabilities-5VPEAE37.js → live-capabilities-HZ42KLZS.js} +5 -5
- package/dist/{paths-NCKEVGEI.js → paths-6JUJIM74.js} +3 -3
- package/dist/{reapply-UPZ2L4ID.js → reapply-5WV6IS5V.js} +28 -28
- package/dist/src/index.js +29 -29
- package/dist/{upgrade-lock-J36URBLG.js → upgrade-lock-ENAQL63D.js} +4 -4
- package/dist/{usage-BL3KXNWQ.js → usage-BO7LGOA3.js} +3 -3
- package/package.json +1 -1
|
@@ -1942,6 +1942,8 @@ var POWERSHELL_FILE_WRITERS = /* @__PURE__ */ new Set([
|
|
|
1942
1942
|
"start-bitstransfer"
|
|
1943
1943
|
]);
|
|
1944
1944
|
var POWERSHELL_FETCHERS = /* @__PURE__ */ new Set(["invoke-webrequest", "invoke-restmethod", "start-bitstransfer"]);
|
|
1945
|
+
var POWERSHELL_WEB_REQUESTS = /* @__PURE__ */ new Set(["invoke-webrequest", "invoke-restmethod"]);
|
|
1946
|
+
var WEB_READ_METHODS = /* @__PURE__ */ new Set(["get", "head", "options"]);
|
|
1945
1947
|
var DISK_ERASERS = /* @__PURE__ */ new Set(["format-volume", "clear-disk", "initialize-disk", "remove-partition", "format"]);
|
|
1946
1948
|
var WINDOWS_SERVICE_CHANGERS = /* @__PURE__ */ new Set([
|
|
1947
1949
|
"start-service",
|
|
@@ -2140,9 +2142,29 @@ var stageIsDestructive = (stage, judge) => {
|
|
|
2140
2142
|
const command = powerShellCommandOf(stage);
|
|
2141
2143
|
return DOTNET_RECURSIVE_DELETE.test(stage.source) || command !== null && (removesRecursively(command) || !onlyReads(command, judge) && judge.namesADestructiveAction(keywordTextOf(command)));
|
|
2142
2144
|
};
|
|
2145
|
+
var LOOKS_LIKE_AN_ADDRESS = /^(?:[a-z][a-z\d+.-]*:\/\/|localhost\b|127\.|\[::1\])/i;
|
|
2146
|
+
var namesAWebRequestBody = (command) => command.args.some((arg) => {
|
|
2147
|
+
const parameter = parameterOf(arg);
|
|
2148
|
+
return namesTheParameter(parameter, "body", 1) || namesTheParameter(parameter, "infile", 2) || namesTheParameter(parameter, "form", 3);
|
|
2149
|
+
});
|
|
2150
|
+
var webRequestMethodOf = (command) => parameterValueOf(command, "method", 2) ?? parameterValueOf(command, "custommethod", 2);
|
|
2151
|
+
var SPLATTED_PARAMETERS = /^@\w+$/;
|
|
2152
|
+
var splatsItsParameters = (command) => command.args.some((arg) => !arg.quoted && SPLATTED_PARAMETERS.test(arg.text));
|
|
2153
|
+
var goesThroughAProxy = (command) => command.args.some((arg) => namesTheParameter(parameterOf(arg), "proxy", 5));
|
|
2154
|
+
var webRequestSendsData = (command) => {
|
|
2155
|
+
const method = webRequestMethodOf(command);
|
|
2156
|
+
if (splatsItsParameters(command)) return true;
|
|
2157
|
+
return method === void 0 ? namesAWebRequestBody(command) : method.includes("$") || !WEB_READ_METHODS.has(method.toLowerCase());
|
|
2158
|
+
};
|
|
2159
|
+
var webRequestAddressesOf = (command) => {
|
|
2160
|
+
if (splatsItsParameters(command) || goesThroughAProxy(command)) return [];
|
|
2161
|
+
const uri = parameterValueOf(command, "uri", 2);
|
|
2162
|
+
return uri === void 0 ? positionalTextsOf(command).filter((text3) => LOOKS_LIKE_AN_ADDRESS.test(text3)) : [uri];
|
|
2163
|
+
};
|
|
2164
|
+
var sendsAWebRequestThatNeedsAPerson = (command, judge) => POWERSHELL_WEB_REQUESTS.has(command.cmdlet) && judge.webRequestNeedsAPerson({ sendsData: webRequestSendsData(command), addresses: webRequestAddressesOf(command) });
|
|
2143
2165
|
var stageHasAVisibleConsequence = (stage, judge) => {
|
|
2144
2166
|
const command = powerShellCommandOf(stage);
|
|
2145
|
-
return stage.redirectTargets.some((target) => namesAPathThatNeedsAPerson(target.text, judge)) || command !== null && !onlyReads(command, judge) && powerShellCommandChangesSomething(command, judge);
|
|
2167
|
+
return stage.redirectTargets.some((target) => namesAPathThatNeedsAPerson(target.text, judge)) || command !== null && sendsAWebRequestThatNeedsAPerson(command, judge) || command !== null && !onlyReads(command, judge) && powerShellCommandChangesSomething(command, judge);
|
|
2146
2168
|
};
|
|
2147
2169
|
var fetchesWithPowerShell = (stage, judge) => {
|
|
2148
2170
|
const command = powerShellCommandOf(stage);
|
|
@@ -4624,12 +4646,15 @@ var PUSHES_EVERY_TAG = /* @__PURE__ */ new Set(["--tags", "--follow-tags"]);
|
|
|
4624
4646
|
var NAMES_A_TAG = /(?:^|:)\+?refs\/tags\/|^tag$|(?:^|:)v?\d+(?:\.\d+){1,3}$|(?:^|:)v?\d+\.\d+\.\d+[-+][\w.]+$|\/v\d+\.\d+\.\d+(?:\.\d+)?(?:[-+][\w.]+)?$|^v\$/;
|
|
4625
4647
|
var TAG_HELD_IN_A_VARIABLE = /^v?\$\{?(?:\w+_)?(?:tag|version)(?:_name)?\}?$/i;
|
|
4626
4648
|
var GIT_PUSH = "push";
|
|
4649
|
+
var NAMES_A_MAJOR_VERSION_TAG = /(?:^|:)v\d+$/;
|
|
4650
|
+
var SETS_THE_UPSTREAM_BRANCH = /* @__PURE__ */ new Set(["-u", "--set-upstream"]);
|
|
4627
4651
|
var pushesATag = ({ program, args }) => {
|
|
4628
4652
|
if (program === void 0 || basenameOf(program.text) !== GIT) return false;
|
|
4629
4653
|
const [subcommand, ...rest] = argsAfterHarmlessGlobalFlags(args);
|
|
4630
4654
|
if (subcommand?.text !== GIT_PUSH) return false;
|
|
4631
4655
|
const operands = rest.filter((arg) => !FLAG.test(arg.text));
|
|
4632
|
-
|
|
4656
|
+
const pushesABranch = rest.some((arg) => SETS_THE_UPSTREAM_BRANCH.has(arg.text));
|
|
4657
|
+
return rest.some((arg) => PUSHES_EVERY_TAG.has(arg.text)) || operands.slice(1).some((operand) => NAMES_A_TAG.test(operand.text) || TAG_HELD_IN_A_VARIABLE.test(operand.text) || !pushesABranch && NAMES_A_MAJOR_VERSION_TAG.test(operand.text));
|
|
4633
4658
|
};
|
|
4634
4659
|
var SECRET_FILE_NAME = /^(?:\.env(?:\.(?!example$|sample$|template$)[\w.-]+)?|(?:secrets?|credentials)\.(?:json|ya?ml|env|toml|ini)|credentials)$/i;
|
|
4635
4660
|
var CI_WORKFLOW_FILE = /(?:^|\/)\.github\/workflows\/[^/]+$/i;
|
|
@@ -4645,7 +4670,24 @@ var AGENT_SETTINGS_FILE = new RegExp(String.raw`(?:^|/)(?:${[
|
|
|
4645
4670
|
String.raw`\.config/opencode/(?:opencode\.jsonc?|plugins?/.+)`,
|
|
4646
4671
|
String.raw`\.pushary(?:/.+)?`,
|
|
4647
4672
|
String.raw`\.git/hooks(?:/.+)?`,
|
|
4648
|
-
String.raw`\.
|
|
4673
|
+
String.raw`\.git/config`,
|
|
4674
|
+
String.raw`\.ssh(?:/(?!known_hosts(?:\.old)?$).+)?`,
|
|
4675
|
+
String.raw`\.mcp\.json`,
|
|
4676
|
+
String.raw`\.cursor/mcp\.json`,
|
|
4677
|
+
String.raw`\.claude/hooks/.+`,
|
|
4678
|
+
String.raw`pushary-(?:policy|mode)-[^/]*\.json`
|
|
4679
|
+
].join("|")})$`, "i");
|
|
4680
|
+
var HOME_DIRECTORY = String.raw`(?:~|\$HOME|\$\{HOME\}|(?:[A-Za-z]:)?/Users/[^/]+|/home/[^/]+|/root|/var/root)`;
|
|
4681
|
+
var FILE_THE_MACHINE_RUNS_LATER = new RegExp(String.raw`^(?:${[
|
|
4682
|
+
String.raw`${HOME_DIRECTORY}/\.(?:zshrc|zshenv|zprofile|zlogin|zlogout|bashrc|bash_profile|bash_login|bash_logout|bash_aliases|profile)(?:\.[\w-]+)?`,
|
|
4683
|
+
String.raw`${HOME_DIRECTORY}/\.gitconfig(?:[-._][\w.-]+)?`,
|
|
4684
|
+
String.raw`${HOME_DIRECTORY}/\.p10k\.zsh`,
|
|
4685
|
+
String.raw`${HOME_DIRECTORY}/\.(?:zsh|zshrc\.d|oh-my-zsh)/.+`,
|
|
4686
|
+
String.raw`${HOME_DIRECTORY}/\.config/(?:fish/config\.fish|fish/conf\.d/.+|git/config|zsh/.+|systemd/user/.+)`,
|
|
4687
|
+
String.raw`(?:.*/)?Library/Launch(?:Agents|Daemons)/[^/]+`,
|
|
4688
|
+
String.raw`(?:.*/)?(?:Windows)?PowerShell/(?:Microsoft\.[\w.]+_)?profile\.ps1`,
|
|
4689
|
+
String.raw`\$profile(?:\.\w+)?`,
|
|
4690
|
+
String.raw`/(?:private/)?etc/.+`
|
|
4649
4691
|
].join("|")})$`, "i");
|
|
4650
4692
|
var withoutDotSegments = (path) => {
|
|
4651
4693
|
const kept = [];
|
|
@@ -4657,7 +4699,7 @@ var withoutDotSegments = (path) => {
|
|
|
4657
4699
|
};
|
|
4658
4700
|
var pathNeedsAPersonToChange = (path) => {
|
|
4659
4701
|
const written = withoutDotSegments(normalizeSeparators(path));
|
|
4660
|
-
return SECRET_FILE_NAME.test(basenameOf(written)) || CI_WORKFLOW_FILE.test(written) || AGENT_SETTINGS_FILE.test(written);
|
|
4702
|
+
return SECRET_FILE_NAME.test(basenameOf(written)) || CI_WORKFLOW_FILE.test(written) || AGENT_SETTINGS_FILE.test(written) || FILE_THE_MACHINE_RUNS_LATER.test(written);
|
|
4661
4703
|
};
|
|
4662
4704
|
var REDIRECTS_INTO_A_SECRET_FILE = />>?\s*(?:[^\s;|&<>]*\/)?\.env(?:\.[\w-]+)?(?=$|[\s;|&)])/;
|
|
4663
4705
|
var COPIES_ONTO_ITS_LAST_OPERAND = /* @__PURE__ */ new Set(["cp", "install", "ln", "rsync", "scp"]);
|
|
@@ -4718,7 +4760,8 @@ var FOLDER_THAT_NEEDS_A_PERSON = new RegExp(String.raw`(?:^|/)(?:${[
|
|
|
4718
4760
|
String.raw`\.pushary`,
|
|
4719
4761
|
String.raw`\.git/hooks`,
|
|
4720
4762
|
String.raw`\.ssh`,
|
|
4721
|
-
String.raw`\.config/opencode(?:/plugins?)
|
|
4763
|
+
String.raw`\.config/opencode(?:/plugins?)?`,
|
|
4764
|
+
String.raw`Library/Launch(?:Agents|Daemons)`
|
|
4722
4765
|
].join("|")})$`, "i");
|
|
4723
4766
|
var folderNeedsAPersonToChange = (path) => FOLDER_THAT_NEEDS_A_PERSON.test(withoutDotSegments(normalizeSeparators(path)));
|
|
4724
4767
|
var NETWORK_SENDERS = /* @__PURE__ */ new Set([
|
|
@@ -4775,6 +4818,41 @@ var changesWhereGitLooksForHooks = ({ program, args }) => {
|
|
|
4775
4818
|
if (args[setting - 1]?.text === GIT_ONE_COMMAND_SETTING_FLAG) return true;
|
|
4776
4819
|
return args.some((arg) => arg.text === GIT_CONFIG_SUBCOMMAND) && (args[setting + 1] !== void 0 || args.some((arg) => GIT_CONFIG_UNSET_FLAGS.has(arg.text)));
|
|
4777
4820
|
};
|
|
4821
|
+
var GIT_SETTING_THAT_RUNS_A_PROGRAM = new RegExp(`^(?:${[
|
|
4822
|
+
String.raw`core\.(?:fsmonitor|sshcommand|pager|editor|askpass|gitproxy|alternaterefscommand|hookspath)`,
|
|
4823
|
+
String.raw`pager\..+`,
|
|
4824
|
+
String.raw`sequence\.editor`,
|
|
4825
|
+
String.raw`diff\.external`,
|
|
4826
|
+
String.raw`diff\..+\.(?:textconv|command)`,
|
|
4827
|
+
String.raw`merge\..+\.driver`,
|
|
4828
|
+
String.raw`(?:diff|merge)tool\..+\.(?:cmd|path)`,
|
|
4829
|
+
String.raw`interactive\.difffilter`,
|
|
4830
|
+
String.raw`gpg\.ssh\.defaultkeycommand`,
|
|
4831
|
+
String.raw`uploadpack\.packobjectshook`,
|
|
4832
|
+
String.raw`credential\.(?:.+\.)?helper`,
|
|
4833
|
+
String.raw`gpg(?:\.[\w-]+)?\.program`,
|
|
4834
|
+
String.raw`filter\..+\.(?:clean|smudge|process)`,
|
|
4835
|
+
String.raw`remote\..+\.(?:uploadpack|receivepack)`,
|
|
4836
|
+
String.raw`protocol\.(?:.+\.)?allow`,
|
|
4837
|
+
String.raw`include\.path`,
|
|
4838
|
+
String.raw`includeif\..+\.path`
|
|
4839
|
+
].join("|")})$`, "i");
|
|
4840
|
+
var SWITCHES_A_SETTING_ON_OR_OFF = /^(?:true|false|yes|no|on|off|0|1|never|)$/i;
|
|
4841
|
+
var GIT_INCLUDE_SETTING = /^include(?:if\..+)?\.path$/i;
|
|
4842
|
+
var GIT_CREDENTIAL_HELPER_SETTING = /^credential\.(?:.+\.)?helper$/i;
|
|
4843
|
+
var NAMES_A_KNOWN_CREDENTIAL_HELPER = /^(?:osxkeychain|store|cache|manager|manager-core|libsecret|wincred|gnome-keyring)(?:\s+--[\w-]+(?:=[\w./~:@%+,-]+)?)*$/i;
|
|
4844
|
+
var namesNoNewProgram = (setting, value) => !value.expands && !GIT_INCLUDE_SETTING.test(setting) && (SWITCHES_A_SETTING_ON_OR_OFF.test(value.text) || GIT_CREDENTIAL_HELPER_SETTING.test(setting) && NAMES_A_KNOWN_CREDENTIAL_HELPER.test(value.text));
|
|
4845
|
+
var GIT_SETTING_THAT_RUNS_A_COMMAND_AFTER_A_BANG = /^(?:alias\..+|submodule\..+\.update)$/i;
|
|
4846
|
+
var RUNS_A_SHELL_COMMAND = /^!/;
|
|
4847
|
+
var setsAGitSettingThatRunsAProgram = ({ program, args }) => {
|
|
4848
|
+
if (program === void 0 || basenameOf(program.text) !== GIT || !args.some((arg) => arg.text === GIT_CONFIG_SUBCOMMAND)) return false;
|
|
4849
|
+
const operands = args.filter((arg) => !FLAG.test(arg.text));
|
|
4850
|
+
const setting = operands.findIndex((arg) => GIT_SETTING_THAT_RUNS_A_PROGRAM.test(arg.text) || GIT_SETTING_THAT_RUNS_A_COMMAND_AFTER_A_BANG.test(arg.text));
|
|
4851
|
+
const value = setting === -1 ? void 0 : operands[setting + 1];
|
|
4852
|
+
const name = operands[setting]?.text ?? "";
|
|
4853
|
+
if (value === void 0 || namesNoNewProgram(name, value)) return false;
|
|
4854
|
+
return !GIT_SETTING_THAT_RUNS_A_COMMAND_AFTER_A_BANG.test(name) || value.expands || RUNS_A_SHELL_COMMAND.test(value.text);
|
|
4855
|
+
};
|
|
4778
4856
|
var writesAFileThatNeedsAPerson = ({ program, args }) => {
|
|
4779
4857
|
if (program === void 0) return false;
|
|
4780
4858
|
if (sendsAFileThatNeedsAPerson({ program, args })) return true;
|
|
@@ -5018,6 +5096,7 @@ var GITHUB_COMMANDS_WITH_A_CONSEQUENCE = /* @__PURE__ */ new Map([
|
|
|
5018
5096
|
["secret", /* @__PURE__ */ new Set(["set"])],
|
|
5019
5097
|
["variable", /* @__PURE__ */ new Set(["set"])],
|
|
5020
5098
|
[GITHUB_REPO_NOUN, /* @__PURE__ */ new Set(["archive", "rename"])],
|
|
5099
|
+
["workflow", /* @__PURE__ */ new Set(["run", "enable", "disable"])],
|
|
5021
5100
|
["ssh-key", /* @__PURE__ */ new Set(["add"])],
|
|
5022
5101
|
["gpg-key", /* @__PURE__ */ new Set(["add"])]
|
|
5023
5102
|
]);
|
|
@@ -5188,13 +5267,210 @@ var sshRemoteCommandOf = (args) => {
|
|
|
5188
5267
|
}
|
|
5189
5268
|
return args.slice(index + 1);
|
|
5190
5269
|
};
|
|
5270
|
+
var PLAIN_REMOTE_COMMAND = /^[\w ./:=,@%+-]+$/;
|
|
5271
|
+
var REMOTE_STATUS_COMMAND = new RegExp(`^(?:${[
|
|
5272
|
+
String.raw`(?:uptime|free|who|w|nproc|lscpu|lsblk|last|lsof|netstat)`,
|
|
5273
|
+
String.raw`docker (?:compose )?(?:ps|images|logs|inspect|stats|top|version|info)`,
|
|
5274
|
+
String.raw`systemctl (?:status|is-active|is-enabled|is-failed|list-units|list-timers|show|cat)`,
|
|
5275
|
+
String.raw`journalctl`
|
|
5276
|
+
].join("|")})(?: |$)`);
|
|
5277
|
+
var JOURNAL_CHANGING_OPTIONS = [
|
|
5278
|
+
"vacuum-size",
|
|
5279
|
+
"vacuum-time",
|
|
5280
|
+
"vacuum-files",
|
|
5281
|
+
"rotate",
|
|
5282
|
+
"flush",
|
|
5283
|
+
"sync",
|
|
5284
|
+
"relinquish-var",
|
|
5285
|
+
"smart-relinquish-var",
|
|
5286
|
+
"setup-keys",
|
|
5287
|
+
"update-catalog",
|
|
5288
|
+
"cursor-file"
|
|
5289
|
+
];
|
|
5290
|
+
var JOURNAL_READ_OPTIONS_SHARING_A_PREFIX = /* @__PURE__ */ new Set(["cursor"]);
|
|
5291
|
+
var LONG_OPTION_NAME = /^--([\w-]+)/;
|
|
5292
|
+
var namesAJournalChangingOption = (word) => {
|
|
5293
|
+
const name = LONG_OPTION_NAME.exec(word)?.[1];
|
|
5294
|
+
return name !== void 0 && !JOURNAL_READ_OPTIONS_SHARING_A_PREFIX.has(name) && JOURNAL_CHANGING_OPTIONS.some((option) => option.startsWith(name));
|
|
5295
|
+
};
|
|
5296
|
+
var onlyReadsTheRemoteStatus = (command) => PLAIN_REMOTE_COMMAND.test(command) && REMOTE_STATUS_COMMAND.test(command) && !command.split(" ").some(namesAJournalChangingOption);
|
|
5191
5297
|
var sshRunsMoreThanAReadOnlyCommand = ({ program, args }) => {
|
|
5192
5298
|
if (program === void 0 || basenameOf(program.text) !== SSH) return false;
|
|
5193
5299
|
if (sshOptionRunsACommand(args)) return true;
|
|
5194
5300
|
const command = sshRemoteCommandOf(args);
|
|
5195
|
-
|
|
5301
|
+
const remote = command.map((arg) => arg.text).join(" ");
|
|
5302
|
+
return command.length > 0 && (command.some((arg) => arg.expands) || !isSafeReadOnlyCommand(remote) && !onlyReadsTheRemoteStatus(remote));
|
|
5303
|
+
};
|
|
5304
|
+
var REMOTE_COPY_OPTIONS_WITH_A_VALUE = /* @__PURE__ */ new Map([
|
|
5305
|
+
["scp", /* @__PURE__ */ new Set(["-c", "-D", "-F", "-i", "-J", "-l", "-o", "-P", "-S", "-X"])],
|
|
5306
|
+
["rsync", /* @__PURE__ */ new Set([
|
|
5307
|
+
"-e",
|
|
5308
|
+
"--rsh",
|
|
5309
|
+
"--rsync-path",
|
|
5310
|
+
"--exclude",
|
|
5311
|
+
"--include",
|
|
5312
|
+
"--filter",
|
|
5313
|
+
"-f",
|
|
5314
|
+
"--exclude-from",
|
|
5315
|
+
"--include-from",
|
|
5316
|
+
"--files-from",
|
|
5317
|
+
"--chmod",
|
|
5318
|
+
"--chown",
|
|
5319
|
+
"--log-file",
|
|
5320
|
+
"--password-file",
|
|
5321
|
+
"--port",
|
|
5322
|
+
"--timeout",
|
|
5323
|
+
"--contimeout",
|
|
5324
|
+
"--bwlimit",
|
|
5325
|
+
"--max-size",
|
|
5326
|
+
"--min-size",
|
|
5327
|
+
"--max-delete",
|
|
5328
|
+
"--backup-dir",
|
|
5329
|
+
"--link-dest",
|
|
5330
|
+
"--compare-dest",
|
|
5331
|
+
"--copy-dest",
|
|
5332
|
+
"--partial-dir",
|
|
5333
|
+
"--temp-dir",
|
|
5334
|
+
"-T",
|
|
5335
|
+
"--suffix",
|
|
5336
|
+
"--out-format",
|
|
5337
|
+
"--iconv",
|
|
5338
|
+
"--usermap",
|
|
5339
|
+
"--groupmap",
|
|
5340
|
+
"-M",
|
|
5341
|
+
"--remote-option",
|
|
5342
|
+
"--info",
|
|
5343
|
+
"--debug",
|
|
5344
|
+
"--skip-compress",
|
|
5345
|
+
"--compress-level",
|
|
5346
|
+
"--block-size",
|
|
5347
|
+
"-B",
|
|
5348
|
+
"--modify-window",
|
|
5349
|
+
"--sockopts",
|
|
5350
|
+
"--outbuf",
|
|
5351
|
+
"--copy-as",
|
|
5352
|
+
"--stop-at",
|
|
5353
|
+
"--stop-after",
|
|
5354
|
+
"--time-limit",
|
|
5355
|
+
"--checksum-seed",
|
|
5356
|
+
"--max-alloc",
|
|
5357
|
+
"--early-input",
|
|
5358
|
+
"--address",
|
|
5359
|
+
"--write-batch",
|
|
5360
|
+
"--read-batch",
|
|
5361
|
+
"--only-write-batch"
|
|
5362
|
+
])]
|
|
5363
|
+
]);
|
|
5364
|
+
var SSHPASS = "sshpass";
|
|
5365
|
+
var SSHPASS_OPTIONS_WITH_A_VALUE = /* @__PURE__ */ new Set(["-p", "-f", "-d", "-P"]);
|
|
5366
|
+
var NAMES_ANOTHER_MACHINE = /^(?:(?:rsync|scp|sftp):\/\/|(?:[^\s/:@]+@)?[^\s/:@]+:)/i;
|
|
5367
|
+
var SHORT_OPTION_CLUSTER2 = /^-[A-Za-z]+$/;
|
|
5368
|
+
var clusterEndsWithAnOptionThatTakesAValue = (text3, withAValue) => {
|
|
5369
|
+
const letters = text3.slice(1);
|
|
5370
|
+
const firstWithAValue = [...letters].findIndex((letter) => withAValue.has(`-${letter}`));
|
|
5371
|
+
return firstWithAValue === letters.length - 1;
|
|
5372
|
+
};
|
|
5373
|
+
var optionTakesTheNextWord = (text3, withAValue) => withAValue.has(text3) || SHORT_OPTION_CLUSTER2.test(text3) && clusterEndsWithAnOptionThatTakesAValue(text3, withAValue);
|
|
5374
|
+
var operandsAfterOptions = (args, withAValue) => {
|
|
5375
|
+
const operands = [];
|
|
5376
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
5377
|
+
const text3 = args[index]?.text ?? "";
|
|
5378
|
+
if (text3 === END_OF_OPTIONS3) return [...operands, ...args.slice(index + 1)];
|
|
5379
|
+
if (!FLAG.test(text3)) operands.push(args[index]);
|
|
5380
|
+
else if (optionTakesTheNextWord(text3, withAValue)) index += 1;
|
|
5381
|
+
}
|
|
5382
|
+
return operands;
|
|
5383
|
+
};
|
|
5384
|
+
var optionWordsOf = (args, withAValue) => {
|
|
5385
|
+
const options = [];
|
|
5386
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
5387
|
+
const text3 = args[index]?.text ?? "";
|
|
5388
|
+
if (text3 === END_OF_OPTIONS3) break;
|
|
5389
|
+
if (!FLAG.test(text3)) continue;
|
|
5390
|
+
options.push(text3);
|
|
5391
|
+
if (optionTakesTheNextWord(text3, withAValue)) index += 1;
|
|
5392
|
+
}
|
|
5393
|
+
return options;
|
|
5394
|
+
};
|
|
5395
|
+
var withoutSshpass = (invocation) => {
|
|
5396
|
+
if (invocation.program === void 0 || basenameOf(invocation.program.text) !== SSHPASS) return invocation;
|
|
5397
|
+
const [program, ...args] = operandsAfterOptions(invocation.args, SSHPASS_OPTIONS_WITH_A_VALUE);
|
|
5398
|
+
const start = program === void 0 ? -1 : invocation.args.indexOf(program);
|
|
5399
|
+
return { program, args: start === -1 ? [] : invocation.args.slice(start + 1) };
|
|
5400
|
+
};
|
|
5401
|
+
var RSYNC = "rsync";
|
|
5402
|
+
var RSYNC_DRY_RUN = "--dry-run";
|
|
5403
|
+
var RSYNC_DRY_RUN_LETTER = "n";
|
|
5404
|
+
var RSYNC_REMOTE_SHELL_LETTER = "e";
|
|
5405
|
+
var RSYNC_NAMES_A_PROGRAM = /^--(?:rsh|rsync-path)(?:=|$)/;
|
|
5406
|
+
var clusterTurnsOn = (text3, letter, withAValue) => {
|
|
5407
|
+
if (!SHORT_OPTION_CLUSTER2.test(text3)) return false;
|
|
5408
|
+
for (const each of text3.slice(1)) {
|
|
5409
|
+
if (each === letter) return true;
|
|
5410
|
+
if (withAValue.has(`-${each}`)) return false;
|
|
5411
|
+
}
|
|
5412
|
+
return false;
|
|
5413
|
+
};
|
|
5414
|
+
var rsyncOnlyPreviews = (args, withAValue) => {
|
|
5415
|
+
const options = optionWordsOf(args, withAValue);
|
|
5416
|
+
return options.some((text3) => text3 === RSYNC_DRY_RUN || clusterTurnsOn(text3, RSYNC_DRY_RUN_LETTER, withAValue)) && !options.some((text3) => RSYNC_NAMES_A_PROGRAM.test(text3) || clusterTurnsOn(text3, RSYNC_REMOTE_SHELL_LETTER, withAValue));
|
|
5417
|
+
};
|
|
5418
|
+
var copiesOntoAnotherMachine = (invocation) => {
|
|
5419
|
+
const { program, args } = withoutSshpass(invocation);
|
|
5420
|
+
const name = program === void 0 ? void 0 : basenameOf(program.text);
|
|
5421
|
+
const withAValue = name === void 0 ? void 0 : REMOTE_COPY_OPTIONS_WITH_A_VALUE.get(name);
|
|
5422
|
+
if (withAValue === void 0 || name === RSYNC && rsyncOnlyPreviews(args, withAValue)) return false;
|
|
5423
|
+
const operands = operandsAfterOptions(args, withAValue);
|
|
5424
|
+
const destination = operands.at(-1);
|
|
5425
|
+
return operands.length > 1 && destination !== void 0 && NAMES_ANOTHER_MACHINE.test(destination.text);
|
|
5426
|
+
};
|
|
5427
|
+
var HOSTED_SECRET_WRITES = /* @__PURE__ */ new Map([
|
|
5428
|
+
["doppler", /(?:^| )secrets (?:set|delete|upload)(?: |$)/],
|
|
5429
|
+
["vercel", /(?:^| )env (?:add|rm|remove|update)(?: |$)/],
|
|
5430
|
+
["fly", /(?:^| )secrets (?:set|unset|import|deploy)(?: |$)/],
|
|
5431
|
+
["flyctl", /(?:^| )secrets (?:set|unset|import|deploy)(?: |$)/],
|
|
5432
|
+
["heroku", /(?:^| )config:(?:set|unset|add|remove)(?: |$)/],
|
|
5433
|
+
["netlify", /(?:^| )env:(?:set|unset|import|clone)(?: |$)/],
|
|
5434
|
+
["railway", /(?:^| )variables? (?:set|delete)(?: |$)/],
|
|
5435
|
+
["supabase", /(?:^| )secrets (?:set|unset)(?: |$)/],
|
|
5436
|
+
["wrangler", /(?:^| )secret (?:put|delete|bulk)(?: |$)/],
|
|
5437
|
+
["firebase", /(?:^| )functions:secrets:(?:set|destroy|prune)(?: |$)/],
|
|
5438
|
+
["gcloud", /(?:^| )secrets (?:create|delete|update|versions (?:add|destroy|disable|enable))(?: |$)/],
|
|
5439
|
+
["az", /(?:^| )keyvault secret (?:set|set-attributes|delete|purge|recover|restore)(?: |$)/]
|
|
5440
|
+
]);
|
|
5441
|
+
var RAILWAY_CLI = "railway";
|
|
5442
|
+
var RAILWAY_VARIABLES = /(?:^| )variables?(?: |$)/;
|
|
5443
|
+
var RAILWAY_SET_FLAG = /^(?:--set(?:=|$)|-s$)/;
|
|
5444
|
+
var PACKAGE_RUNNERS = /* @__PURE__ */ new Set(["npx", "bunx", "pnpx", "pnpm", "yarn", "npm", "bun"]);
|
|
5445
|
+
var CLI_OF_A_PACKAGE = /* @__PURE__ */ new Map([
|
|
5446
|
+
["netlify-cli", "netlify"],
|
|
5447
|
+
["firebase-tools", "firebase"],
|
|
5448
|
+
["@railway/cli", "railway"],
|
|
5449
|
+
["@doppler/cli", "doppler"]
|
|
5450
|
+
]);
|
|
5451
|
+
var PACKAGE_VERSION = /(?<=.)@[^/@]*$/;
|
|
5452
|
+
var cliNameOf = (program) => {
|
|
5453
|
+
const unversioned = program.text.replace(PACKAGE_VERSION, "");
|
|
5454
|
+
return CLI_OF_A_PACKAGE.get(unversioned) ?? basenameOf(unversioned);
|
|
5455
|
+
};
|
|
5456
|
+
var namesAHostingCli = (word) => {
|
|
5457
|
+
const name = cliNameOf(word);
|
|
5458
|
+
return HOSTED_SECRET_WRITES.has(name) || name === RAILWAY_CLI;
|
|
5459
|
+
};
|
|
5460
|
+
var withoutAPackageRunner = (invocation) => {
|
|
5461
|
+
const { program, args } = invocation;
|
|
5462
|
+
if (program === void 0 || !PACKAGE_RUNNERS.has(basenameOf(program.text))) return invocation;
|
|
5463
|
+
const start = args.findIndex((arg) => !FLAG.test(arg.text) && namesAHostingCli(arg));
|
|
5464
|
+
return start === -1 ? invocation : { program: args[start], args: args.slice(start + 1) };
|
|
5465
|
+
};
|
|
5466
|
+
var writesAHostedSecret = (invocation) => {
|
|
5467
|
+
const { program, args } = withoutAPackageRunner(invocation);
|
|
5468
|
+
if (program === void 0) return false;
|
|
5469
|
+
const name = cliNameOf(program);
|
|
5470
|
+
const words = args.filter((arg) => !FLAG.test(arg.text)).map((arg) => arg.text.toLowerCase()).join(" ");
|
|
5471
|
+
return (HOSTED_SECRET_WRITES.get(name)?.test(words) ?? false) || name === RAILWAY_CLI && RAILWAY_VARIABLES.test(words) && args.some((arg) => RAILWAY_SET_FLAG.test(arg.text));
|
|
5196
5472
|
};
|
|
5197
|
-
var changesSomethingHostedElsewhere = (invocation) => githubCommandHasAConsequence(invocation) || writesThroughAServiceApi(invocation) || sendsDataOffThisMachine(invocation) || kubectlExecRunsMoreThanAReadOnlyCommand(invocation) || sshRunsMoreThanAReadOnlyCommand(invocation);
|
|
5473
|
+
var changesSomethingHostedElsewhere = (invocation) => githubCommandHasAConsequence(invocation) || writesThroughAServiceApi(invocation) || writesAHostedSecret(invocation) || sendsDataOffThisMachine(invocation) || copiesOntoAnotherMachine(invocation) || kubectlExecRunsMoreThanAReadOnlyCommand(invocation) || sshRunsMoreThanAReadOnlyCommand(invocation);
|
|
5198
5474
|
var segmentWritesThroughARemoteApi = (segment, depth) => {
|
|
5199
5475
|
const innermost = innermostInvocation(segment.invocation);
|
|
5200
5476
|
return invocationWritesThroughARemoteApi(innermost) || commandsNestedIn(innermost, inlineScriptsOf(innermost, segment.heredocs)).some((nested) => commandWritesThroughARemoteApiAt(nested, depth + 1));
|
|
@@ -5494,7 +5770,7 @@ var honoursPreviewFlags = ({ program, args }) => {
|
|
|
5494
5770
|
var onlyPreviews = (invocation) => invocation.program !== void 0 && honoursPreviewFlags(invocation) && invocation.args.some((arg) => !arg.expands && PREVIEW_FLAG.test(arg.text));
|
|
5495
5771
|
var changesWhatIsDeployed = (toolName, invocation, normalized) => !onlyPreviews(invocation) && (changesProduction(invocation) || mergesAPullRequest(invocation) || isCoveredByPolicy(DEPLOY_AND_SCHEMA_COMMAND_PATTERNS, toolName, normalized));
|
|
5496
5772
|
var releasesOrChangesACluster = (toolName, invocation, normalized) => !onlyPreviews(invocation) && (pushesATag(invocation) || publishesAnAppBuild(invocation) || RELEASE_AND_CLUSTER_PROGRAMS.has(basenameOf(invocation.program?.text ?? "")) && isCoveredByPolicy(RELEASE_AND_CLUSTER_COMMAND_PATTERNS, toolName, normalized));
|
|
5497
|
-
var invocationHasAConsequenceOnlyPermissionsOffAsksAbout = (toolName, invocation, normalized) => releasesOrChangesACluster(toolName, invocation, normalized) || mergesAPullRequestByAnyPath(invocation) || writesAFileThatNeedsAPerson(invocation) || changesWhereGitLooksForHooks(invocation) || changesSomethingHostedElsewhere(invocation);
|
|
5773
|
+
var invocationHasAConsequenceOnlyPermissionsOffAsksAbout = (toolName, invocation, normalized) => releasesOrChangesACluster(toolName, invocation, normalized) || mergesAPullRequestByAnyPath(invocation) || writesAFileThatNeedsAPerson(invocation) || changesWhereGitLooksForHooks(invocation) || setsAGitSettingThatRunsAProgram(invocation) || changesSomethingHostedElsewhere(invocation);
|
|
5498
5774
|
var invocationHasAVisibleConsequence = (toolName, invocation, depth, line) => {
|
|
5499
5775
|
if (depth > MAX_CONSEQUENCE_DEPTH) return true;
|
|
5500
5776
|
if (invocation.program === void 0) return false;
|
|
@@ -5776,6 +6052,8 @@ var redirectsIntoAFileThatNeedsAPerson = (command) => {
|
|
|
5776
6052
|
});
|
|
5777
6053
|
};
|
|
5778
6054
|
var posixCommandOf = (words) => words.map(asOneShellWord).join(" ");
|
|
6055
|
+
var webRequestSendsDataOffThisMachine = ({ sendsData, addresses }) => sendsData && !(addresses.length > 0 && addresses.every((address) => THIS_MACHINE_ADDRESS.test(address)));
|
|
6056
|
+
var noWebRequestNeedsAPerson = () => false;
|
|
5779
6057
|
var namesASecretPowerShellPath = (path) => SECRET_FILE_NAME.test(fileNameOf(path));
|
|
5780
6058
|
var posixShellJudgeFor = (toolName, line = "standing_allow") => ({
|
|
5781
6059
|
namesADestructiveAction: (text3) => classifyDecisionRisk(toolName, text3) === "destructive",
|
|
@@ -5785,7 +6063,8 @@ var posixShellJudgeFor = (toolName, line = "standing_allow") => ({
|
|
|
5785
6063
|
fetches,
|
|
5786
6064
|
runsWhatItReads,
|
|
5787
6065
|
runsScripts,
|
|
5788
|
-
namesAFileThatNeedsAPerson: line === "permissions_off" ? pathNeedsAPersonToChange : namesASecretPowerShellPath
|
|
6066
|
+
namesAFileThatNeedsAPerson: line === "permissions_off" ? pathNeedsAPersonToChange : namesASecretPowerShellPath,
|
|
6067
|
+
webRequestNeedsAPerson: line === "permissions_off" ? webRequestSendsDataOffThisMachine : noWebRequestNeedsAPerson
|
|
5789
6068
|
});
|
|
5790
6069
|
var commandIsDestructive = (toolName, command) => shellDialectOf(toolName) === "powershell" ? powerShellCommandIsDestructive(command, posixShellJudgeFor(toolName)) : readingsThatCanAct(command).some((reading) => classifyDecisionRisk(toolNameForAPosixReading(toolName), reading) === "destructive");
|
|
5791
6070
|
var commandHasAConsequenceOnTheLine = (toolName, command, line) => shellDialectOf(toolName) === "powershell" ? powerShellCommandHasAVisibleConsequence(command, posixShellJudgeFor(toolName, line)) : commandHasAVisibleConsequenceAt(toolNameForAPosixReading(toolName), command, 0, line);
|
|
@@ -7179,6 +7458,7 @@ var bypassModeCoversEveryInput = (input) => input.deletesFiles !== true && input
|
|
|
7179
7458
|
var bypassModeApplies = (input) => isBypassPermissionMode(input.permissionMode) && !isModeStateDegraded(input.modeState) && noModeOverrideIsActive(input) && input.toolInputs.length > 0;
|
|
7180
7459
|
var bypassModeAllows = (input) => bypassModeApplies(input) && (bypassStopsOf(input.config) === "nothing" ? !aChosenRuleGovernsInEitherRepository(input, ruleAsksOrRefuses) : bypassModeCoversEveryInput(input));
|
|
7181
7460
|
var PERMISSIONS_OFF_ASK_REASON = "Permissions are off in your agent, so Pushary only stops for risky steps like this one. You can change this in Settings on pushary.com.";
|
|
7461
|
+
var permissionsOffLineAppliesTo = (agentType) => agentType === CLAUDE_CODE_AGENT_TYPE;
|
|
7182
7462
|
var permissionsOffAskReason = (input, verdict) => verdict.kind === "gate" && !verdict.scopeReason && !isAskedInEveryMode(input.toolName) && bypassModeApplies(input) && bypassStopsOf(input.config) === "consequences" && !aChosenRuleGovernsInEitherRepository(input) ? PERMISSIONS_OFF_ASK_REASON : void 0;
|
|
7183
7463
|
var resolveGate = (input) => {
|
|
7184
7464
|
const { modeState, config, toolName, toolInputs, cwd, sessionId } = input;
|
|
@@ -7536,6 +7816,7 @@ var PLAN_DECLINED_REASON = "Plan declined from the phone. Ask what to change bef
|
|
|
7536
7816
|
var claudeStoppedPreToolUseOutput = (reason) => stoppedOutput(claudePreToolUseOutput("deny", reason), reason);
|
|
7537
7817
|
var claudeStoppedPermissionRequestOutput = (reason) => stoppedOutput(claudePermissionRequestOutput("deny", reason), reason);
|
|
7538
7818
|
var UNANSWERED_ASKS_BEFORE_PAUSE = 3;
|
|
7819
|
+
var CLAUDE_CODE_AGENT_TYPE = "claude_code";
|
|
7539
7820
|
var SESSION_PAUSED_REASON = `Phone approvals for this session are paused because ${UNANSWERED_ASKS_BEFORE_PAUSE} of them went unanswered, so this was refused without asking anyone. A notification was sent to your phone: tap Approve on it to resume, then run this again.`;
|
|
7540
7821
|
var unansweredRefusalReason = (paused) => paused ? SESSION_PAUSED_REASON : NO_RESPONSE_REASON;
|
|
7541
7822
|
var UNHEARD_PUSH_WINDOW_DAYS = 14;
|
|
@@ -7883,6 +8164,7 @@ export {
|
|
|
7883
8164
|
PRETOOLUSE_HANDLED_TOOLS,
|
|
7884
8165
|
isPermissionRequestOwnedByPreToolUse,
|
|
7885
8166
|
CLAUDE_PRETOOLUSE_MATCHER,
|
|
8167
|
+
permissionsOffLineAppliesTo,
|
|
7886
8168
|
permissionsOffAskReason,
|
|
7887
8169
|
resolveGate,
|
|
7888
8170
|
editGoesToTheAgentsPrompt,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CODEX_HOOK_STATUS
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SXX47FHL.js";
|
|
4
4
|
import {
|
|
5
5
|
retryAgentCommand
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TZE2S3XP.js";
|
|
7
7
|
import {
|
|
8
8
|
NPX_LATEST_COMMAND
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CMDIKFVL.js";
|
|
10
10
|
|
|
11
11
|
// src/setup/codex-trust.ts
|
|
12
12
|
var CODEX_TRUST_TELEMETRY = {
|
|
@@ -6,18 +6,18 @@ import {
|
|
|
6
6
|
McpToolError,
|
|
7
7
|
SubscriptionRequiredError,
|
|
8
8
|
callMcpTool
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-E5WUBHVH.js";
|
|
10
10
|
import {
|
|
11
11
|
installNetworkDefaults,
|
|
12
12
|
isNetworkFailure
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-6RGQIKAC.js";
|
|
14
14
|
import {
|
|
15
15
|
clientReportClaims
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-KNVTKFDP.js";
|
|
17
17
|
import {
|
|
18
18
|
getApiKey,
|
|
19
19
|
getBaseUrl
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-RZD7ULBJ.js";
|
|
21
21
|
import {
|
|
22
22
|
ASK_AGENT_NAME_MAX,
|
|
23
23
|
CLIENT_REPORT_PATH,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
TOOL_FAILURE_CODES,
|
|
27
27
|
degradedLine,
|
|
28
28
|
truncateLine
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-WOFHN2IZ.js";
|
|
30
30
|
|
|
31
31
|
// src/api.ts
|
|
32
32
|
import { randomUUID } from "crypto";
|
|
@@ -22,22 +22,22 @@ import {
|
|
|
22
22
|
turnCodexAppCardsOff,
|
|
23
23
|
turnCodexAppCardsOn,
|
|
24
24
|
whyLaunchctlFailed
|
|
25
|
-
} from "./chunk-
|
|
26
|
-
import "./chunk-
|
|
25
|
+
} from "./chunk-2ZAFA3XI.js";
|
|
26
|
+
import "./chunk-TKOL7DJH.js";
|
|
27
27
|
import "./chunk-XCEN33UP.js";
|
|
28
28
|
import "./chunk-QCGNGEGE.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-APFQBVQW.js";
|
|
30
30
|
import "./chunk-XHKBHWLX.js";
|
|
31
|
-
import "./chunk-
|
|
31
|
+
import "./chunk-HD7AURL6.js";
|
|
32
32
|
import "./chunk-E46NE7FB.js";
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
37
|
-
import "./chunk-
|
|
38
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-ZFUSWR2P.js";
|
|
34
|
+
import "./chunk-GEA6ZV2P.js";
|
|
35
|
+
import "./chunk-KNVTKFDP.js";
|
|
36
|
+
import "./chunk-6CDA4R5L.js";
|
|
37
|
+
import "./chunk-RZD7ULBJ.js";
|
|
38
|
+
import "./chunk-CMDIKFVL.js";
|
|
39
39
|
import "./chunk-ZVU6WMMU.js";
|
|
40
|
-
import "./chunk-
|
|
40
|
+
import "./chunk-WOFHN2IZ.js";
|
|
41
41
|
import "./chunk-MLKGABMK.js";
|
|
42
42
|
export {
|
|
43
43
|
CODEX_APP_CARDS_DIRECTORY,
|
|
@@ -11,35 +11,35 @@ import {
|
|
|
11
11
|
isCodexQuestionLeftWithTheLocalClient,
|
|
12
12
|
planCodexElicitation,
|
|
13
13
|
reportOwnedQuestion
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-KZTN6OXM.js";
|
|
15
|
+
import "./chunk-5OLBO5EB.js";
|
|
16
|
+
import "./chunk-LKDAMWTZ.js";
|
|
17
|
+
import "./chunk-QCEY7TSX.js";
|
|
18
18
|
import "./chunk-N5P2FLOJ.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-VHOGSWUF.js";
|
|
20
|
+
import "./chunk-NI3NSURQ.js";
|
|
21
|
+
import "./chunk-UAUADSJX.js";
|
|
22
22
|
import "./chunk-XMSDA5WA.js";
|
|
23
23
|
import "./chunk-XHKBHWLX.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-CB2RYMAO.js";
|
|
25
25
|
import {
|
|
26
26
|
writeDegraded
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-Z6O6CDTP.js";
|
|
28
28
|
import "./chunk-POFBE6ZY.js";
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-E5WUBHVH.js";
|
|
30
|
+
import "./chunk-OW4WEO56.js";
|
|
31
|
+
import "./chunk-6RGQIKAC.js";
|
|
32
|
+
import "./chunk-ZFUSWR2P.js";
|
|
33
|
+
import "./chunk-KNVTKFDP.js";
|
|
34
|
+
import "./chunk-6CDA4R5L.js";
|
|
35
|
+
import "./chunk-RZD7ULBJ.js";
|
|
36
36
|
import "./chunk-PPY5N2E6.js";
|
|
37
37
|
import "./chunk-KZERVKTD.js";
|
|
38
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-CMDIKFVL.js";
|
|
39
39
|
import "./chunk-ZVU6WMMU.js";
|
|
40
40
|
import {
|
|
41
41
|
canonicalJsonText
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-WOFHN2IZ.js";
|
|
43
43
|
import "./chunk-MLKGABMK.js";
|
|
44
44
|
|
|
45
45
|
// src/codex-session-launch.ts
|
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
getApiKey,
|
|
4
4
|
getBaseUrl,
|
|
5
5
|
resetKeyDriftWarning
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-RZD7ULBJ.js";
|
|
7
|
+
import "./chunk-CMDIKFVL.js";
|
|
8
|
+
import "./chunk-WOFHN2IZ.js";
|
|
9
9
|
import "./chunk-MLKGABMK.js";
|
|
10
10
|
export {
|
|
11
11
|
configFilePath,
|
|
@@ -7,19 +7,19 @@ import {
|
|
|
7
7
|
recordUnfinishedUpgrade,
|
|
8
8
|
upgradeInstalledPackage,
|
|
9
9
|
withUpgradeLock
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-AUZITE2H.js";
|
|
11
|
+
import "./chunk-TSSV3NBD.js";
|
|
12
|
+
import "./chunk-LKDAMWTZ.js";
|
|
13
|
+
import "./chunk-QCEY7TSX.js";
|
|
14
|
+
import "./chunk-NI3NSURQ.js";
|
|
15
|
+
import "./chunk-IED5CTYP.js";
|
|
16
16
|
import "./chunk-POFBE6ZY.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-KNVTKFDP.js";
|
|
18
|
+
import "./chunk-6CDA4R5L.js";
|
|
19
19
|
import "./chunk-KZERVKTD.js";
|
|
20
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-CMDIKFVL.js";
|
|
21
21
|
import "./chunk-ZVU6WMMU.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-WOFHN2IZ.js";
|
|
23
23
|
import "./chunk-MLKGABMK.js";
|
|
24
24
|
export {
|
|
25
25
|
finishGlobalUpgrade,
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
getMachineId,
|
|
3
3
|
getOrCreateMachineId,
|
|
4
4
|
readExistingMachineId
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-ZFUSWR2P.js";
|
|
6
|
+
import "./chunk-KNVTKFDP.js";
|
|
7
|
+
import "./chunk-6CDA4R5L.js";
|
|
8
8
|
import "./chunk-ZVU6WMMU.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-WOFHN2IZ.js";
|
|
10
10
|
import "./chunk-MLKGABMK.js";
|
|
11
11
|
export {
|
|
12
12
|
getMachineId,
|