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.
Files changed (126) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/{api-FPEL3PLH.js → api-WH3DLHJB.js} +10 -10
  3. package/dist/bin/pushary-bell-hook.js +26 -26
  4. package/dist/bin/pushary-bell.js +10 -10
  5. package/dist/bin/pushary-claude.js +27 -27
  6. package/dist/bin/pushary-clean.js +34 -34
  7. package/dist/bin/pushary-codex-bridge.js +21 -21
  8. package/dist/bin/pushary-codex-hook.js +32 -34
  9. package/dist/bin/pushary-codex-session.js +8 -8
  10. package/dist/bin/pushary-codex.js +14 -14
  11. package/dist/bin/pushary-connect.js +27 -27
  12. package/dist/bin/pushary-cowork.js +5 -5
  13. package/dist/bin/pushary-daemon.js +39 -39
  14. package/dist/bin/pushary-disconnect.js +26 -26
  15. package/dist/bin/pushary-display-hook.js +17 -17
  16. package/dist/bin/pushary-doctor.js +42 -42
  17. package/dist/bin/pushary-elicitation-hook.js +26 -26
  18. package/dist/bin/pushary-gemini-bridge.js +15 -15
  19. package/dist/bin/pushary-gemini-hook.js +28 -28
  20. package/dist/bin/pushary-hook.js +30 -30
  21. package/dist/bin/pushary-login.js +20 -20
  22. package/dist/bin/pushary-logout.js +25 -25
  23. package/dist/bin/pushary-mcp.js +11 -11
  24. package/dist/bin/pushary-mode.js +15 -15
  25. package/dist/bin/pushary-notification-hook.js +25 -25
  26. package/dist/bin/pushary-opencode-hook.js +27 -27
  27. package/dist/bin/pushary-permission-denied-hook.js +30 -30
  28. package/dist/bin/pushary-permission-hook.js +30 -30
  29. package/dist/bin/pushary-post-hook.js +25 -25
  30. package/dist/bin/pushary-prompt-hook.js +25 -25
  31. package/dist/bin/pushary-session-end-hook.js +27 -27
  32. package/dist/bin/pushary-session-start-hook.js +35 -35
  33. package/dist/bin/pushary-setup.js +48 -48
  34. package/dist/bin/pushary-stats.js +5 -5
  35. package/dist/bin/pushary-status.js +32 -32
  36. package/dist/bin/pushary-stop-hook.js +25 -25
  37. package/dist/bin/pushary-stopfailure-hook.js +25 -25
  38. package/dist/bin/pushary-suggestions.js +15 -15
  39. package/dist/bin/pushary-transcript-register.js +18 -18
  40. package/dist/bin/pushary-transcripts.js +26 -26
  41. package/dist/bin/pushary-upgrade.js +40 -40
  42. package/dist/bin/pushary-wait.js +15 -15
  43. package/dist/bin/pushary.js +7 -7
  44. package/dist/{chunk-AEOYYLXF.js → chunk-2ZAFA3XI.js} +3 -3
  45. package/dist/{chunk-T7X5MQ3H.js → chunk-32577NGL.js} +1 -1
  46. package/dist/{chunk-BDCFB4NV.js → chunk-4D4USO5K.js} +6 -6
  47. package/dist/{chunk-NGSJHUQN.js → chunk-5OLBO5EB.js} +1 -1
  48. package/dist/{chunk-WZADX5VO.js → chunk-5RNZP53C.js} +6 -6
  49. package/dist/{chunk-OQY4G7FS.js → chunk-5U63KUP3.js} +1 -1
  50. package/dist/{chunk-HOYWYQNC.js → chunk-5WOO44TA.js} +5 -5
  51. package/dist/{chunk-BKN5E4L5.js → chunk-5WYXFKZV.js} +1 -1
  52. package/dist/{chunk-3GPXHHBM.js → chunk-5YRDZE5F.js} +1 -1
  53. package/dist/{chunk-77HBRZJI.js → chunk-6CDA4R5L.js} +3 -3
  54. package/dist/{chunk-B75SIY5C.js → chunk-6RGQIKAC.js} +3 -3
  55. package/dist/{chunk-TZWK2BVY.js → chunk-APFQBVQW.js} +6 -6
  56. package/dist/{chunk-R2RCFCFW.js → chunk-AUZITE2H.js} +6 -6
  57. package/dist/{chunk-KG7GT7UW.js → chunk-CB2RYMAO.js} +1 -1
  58. package/dist/{chunk-QDS55ODM.js → chunk-CG3C2WL7.js} +11 -11
  59. package/dist/{chunk-6YG5PZZS.js → chunk-CMDIKFVL.js} +1 -1
  60. package/dist/{chunk-SARU6WNW.js → chunk-CP72YEEA.js} +1 -1
  61. package/dist/{chunk-V7EWOHNV.js → chunk-E5WUBHVH.js} +4 -4
  62. package/dist/{chunk-M7ZV5IPA.js → chunk-EAJT6RYP.js} +7 -7
  63. package/dist/{chunk-4BLNOWGZ.js → chunk-FZQSUS3R.js} +16 -15
  64. package/dist/{chunk-C4IKRLT4.js → chunk-GEA6ZV2P.js} +2 -2
  65. package/dist/{chunk-ARDQBF25.js → chunk-GN2L5CYF.js} +1 -1
  66. package/dist/{chunk-TTK2DLUS.js → chunk-GNFUPHPZ.js} +10 -10
  67. package/dist/{chunk-TVGOSEWS.js → chunk-HD7AURL6.js} +4 -4
  68. package/dist/{chunk-SISYAMDC.js → chunk-HWEEBVS7.js} +4 -4
  69. package/dist/{chunk-7CW3K3B5.js → chunk-HXUE6IIP.js} +5 -5
  70. package/dist/{chunk-6JZNZTGZ.js → chunk-IED5CTYP.js} +3 -3
  71. package/dist/{chunk-HY7G3PWJ.js → chunk-IFQKSIID.js} +3 -3
  72. package/dist/{chunk-VX27HJF6.js → chunk-JA6GCOW2.js} +7 -7
  73. package/dist/{chunk-2QFD5XGU.js → chunk-JR6FCHAQ.js} +3 -3
  74. package/dist/{chunk-YCYFREHD.js → chunk-KNVTKFDP.js} +2 -2
  75. package/dist/{chunk-PD2DWO4X.js → chunk-KYX7VBEE.js} +2 -2
  76. package/dist/{chunk-YGMSDYOH.js → chunk-KZTN6OXM.js} +6 -6
  77. package/dist/{chunk-KHGW7THQ.js → chunk-LKDAMWTZ.js} +4 -4
  78. package/dist/{chunk-DN3QW2TT.js → chunk-MFJFN4DA.js} +3 -3
  79. package/dist/{chunk-MSPHJNUL.js → chunk-MGYGWHG5.js} +1 -1
  80. package/dist/{chunk-2DF4TBGX.js → chunk-MYKZPTAL.js} +1 -1
  81. package/dist/{chunk-3QT3DMNX.js → chunk-NDJ7H2WF.js} +1 -1
  82. package/dist/{chunk-J3W32P43.js → chunk-NI3NSURQ.js} +1 -1
  83. package/dist/{chunk-JU3JYEUG.js → chunk-NTCVGJFC.js} +4 -4
  84. package/dist/{chunk-WVDPP7OQ.js → chunk-OBB6VTSG.js} +5 -5
  85. package/dist/{chunk-T2Z5ITWJ.js → chunk-ORVMA5KJ.js} +3 -3
  86. package/dist/{chunk-CTKJVVDL.js → chunk-OW4WEO56.js} +3 -3
  87. package/dist/{chunk-UFWRBHTV.js → chunk-QCEY7TSX.js} +3 -3
  88. package/dist/{chunk-M52UDSMQ.js → chunk-QP3OSLKU.js} +5 -5
  89. package/dist/{chunk-3QS2RCCZ.js → chunk-R7D3PH2M.js} +6 -6
  90. package/dist/{chunk-B4G4Q2AF.js → chunk-R7TVELKF.js} +1 -1
  91. package/dist/{chunk-CLN5W5QP.js → chunk-RILJLDKG.js} +5 -5
  92. package/dist/{chunk-WUYB3J3Q.js → chunk-RPY5XCGA.js} +2 -2
  93. package/dist/{chunk-EPFI6W2K.js → chunk-RRA6POT5.js} +1 -1
  94. package/dist/{chunk-XZHJVGR3.js → chunk-RSITUL2U.js} +2 -2
  95. package/dist/{chunk-TXDFQD2I.js → chunk-RZD7ULBJ.js} +1 -1
  96. package/dist/{chunk-LGJPT33C.js → chunk-SXX47FHL.js} +2 -2
  97. package/dist/{chunk-TQKVKV76.js → chunk-T35RHO3X.js} +5 -5
  98. package/dist/{chunk-VTFXPV4U.js → chunk-TKOL7DJH.js} +2 -2
  99. package/dist/{chunk-CQ3YV6QI.js → chunk-TSSV3NBD.js} +2 -2
  100. package/dist/{chunk-IVYKPYMH.js → chunk-TZE2S3XP.js} +3 -3
  101. package/dist/{chunk-PDRPVVZX.js → chunk-UAUADSJX.js} +2 -2
  102. package/dist/{chunk-GAZPL742.js → chunk-VAY5AJ6N.js} +4 -4
  103. package/dist/{chunk-SI2CJ2BB.js → chunk-VHOGSWUF.js} +3 -3
  104. package/dist/{chunk-OP2WJEPY.js → chunk-VPT3RDTO.js} +1 -1
  105. package/dist/{chunk-EMVK57K7.js → chunk-VVHNHETX.js} +2 -2
  106. package/dist/{chunk-TAMHTWQZ.js → chunk-VVP4CP4O.js} +10 -10
  107. package/dist/{chunk-3X3ALGMP.js → chunk-W3OTAHLV.js} +4 -4
  108. package/dist/{chunk-XLRPJHXN.js → chunk-W5IW7NZE.js} +1 -1
  109. package/dist/{chunk-OS32P4RZ.js → chunk-WOFHN2IZ.js} +291 -9
  110. package/dist/{chunk-JCYXG6LQ.js → chunk-X22LLKBY.js} +3 -3
  111. package/dist/{chunk-CRJDKGEF.js → chunk-Z6O6CDTP.js} +5 -5
  112. package/dist/{chunk-XLM2JZBE.js → chunk-ZDIQPYM2.js} +1 -1
  113. package/dist/{chunk-N2KK2NSY.js → chunk-ZFUSWR2P.js} +2 -2
  114. package/dist/{codex-app-cards-switch-7YTDIMCX.js → codex-app-cards-switch-DFZK6GPW.js} +11 -11
  115. package/dist/{codex-desktop-launch-CICLFWQX.js → codex-desktop-launch-7QGN7SL7.js} +1 -1
  116. package/dist/{codex-session-launch-KW7VUPAH.js → codex-session-launch-OWMNCYAH.js} +18 -18
  117. package/dist/{config-632JSNBM.js → config-ITPE5M6M.js} +3 -3
  118. package/dist/{global-upgrade-BMCLOI2P.js → global-upgrade-PYEFLMJA.js} +10 -10
  119. package/dist/{identity-UCVTGQHM.js → identity-WTYTOLG3.js} +4 -4
  120. package/dist/{live-capabilities-5VPEAE37.js → live-capabilities-HZ42KLZS.js} +5 -5
  121. package/dist/{paths-NCKEVGEI.js → paths-6JUJIM74.js} +3 -3
  122. package/dist/{reapply-UPZ2L4ID.js → reapply-5WV6IS5V.js} +28 -28
  123. package/dist/src/index.js +29 -29
  124. package/dist/{upgrade-lock-J36URBLG.js → upgrade-lock-ENAQL63D.js} +4 -4
  125. package/dist/{usage-BL3KXNWQ.js → usage-BO7LGOA3.js} +3 -3
  126. 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
- 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));
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`\.ssh(?:/(?!known_hosts(?:\.old)?$).+)?`
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
- return command.length > 0 && (command.some((arg) => arg.expands) || !isSafeReadOnlyCommand(command.map((arg) => arg.text).join(" ")));
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-LGJPT33C.js";
3
+ } from "./chunk-SXX47FHL.js";
4
4
  import {
5
5
  retryAgentCommand
6
- } from "./chunk-IVYKPYMH.js";
6
+ } from "./chunk-TZE2S3XP.js";
7
7
  import {
8
8
  NPX_LATEST_COMMAND
9
- } from "./chunk-6YG5PZZS.js";
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-V7EWOHNV.js";
9
+ } from "./chunk-E5WUBHVH.js";
10
10
  import {
11
11
  installNetworkDefaults,
12
12
  isNetworkFailure
13
- } from "./chunk-B75SIY5C.js";
13
+ } from "./chunk-6RGQIKAC.js";
14
14
  import {
15
15
  clientReportClaims
16
- } from "./chunk-YCYFREHD.js";
16
+ } from "./chunk-KNVTKFDP.js";
17
17
  import {
18
18
  getApiKey,
19
19
  getBaseUrl
20
- } from "./chunk-TXDFQD2I.js";
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-OS32P4RZ.js";
29
+ } from "./chunk-WOFHN2IZ.js";
30
30
 
31
31
  // src/api.ts
32
32
  import { randomUUID } from "crypto";
@@ -24,7 +24,7 @@ import {
24
24
  reportableSessionId,
25
25
  toToolLookup,
26
26
  truncateLine
27
- } from "./chunk-OS32P4RZ.js";
27
+ } from "./chunk-WOFHN2IZ.js";
28
28
 
29
29
  // ../hook-mapping/src/commit-receipt.ts
30
30
  var COMMIT_OUTPUT_MAX_LENGTH = 65536;
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-YCYFREHD.js";
3
+ } from "./chunk-KNVTKFDP.js";
4
4
  import {
5
5
  writeFileAtomic
6
- } from "./chunk-77HBRZJI.js";
6
+ } from "./chunk-6CDA4R5L.js";
7
7
 
8
8
  // src/identity.ts
9
9
  import { randomUUID } from "crypto";
@@ -22,22 +22,22 @@ import {
22
22
  turnCodexAppCardsOff,
23
23
  turnCodexAppCardsOn,
24
24
  whyLaunchctlFailed
25
- } from "./chunk-AEOYYLXF.js";
26
- import "./chunk-VTFXPV4U.js";
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-TZWK2BVY.js";
29
+ import "./chunk-APFQBVQW.js";
30
30
  import "./chunk-XHKBHWLX.js";
31
- import "./chunk-TVGOSEWS.js";
31
+ import "./chunk-HD7AURL6.js";
32
32
  import "./chunk-E46NE7FB.js";
33
- import "./chunk-N2KK2NSY.js";
34
- import "./chunk-C4IKRLT4.js";
35
- import "./chunk-YCYFREHD.js";
36
- import "./chunk-77HBRZJI.js";
37
- import "./chunk-TXDFQD2I.js";
38
- import "./chunk-6YG5PZZS.js";
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-OS32P4RZ.js";
40
+ import "./chunk-WOFHN2IZ.js";
41
41
  import "./chunk-MLKGABMK.js";
42
42
  export {
43
43
  CODEX_APP_CARDS_DIRECTORY,
@@ -11,7 +11,7 @@ import {
11
11
  installedCodexApp,
12
12
  shellQuoted,
13
13
  writeDesktopProxy
14
- } from "./chunk-VTFXPV4U.js";
14
+ } from "./chunk-TKOL7DJH.js";
15
15
  import "./chunk-XCEN33UP.js";
16
16
  import {
17
17
  CODEX_APP_LAUNCH_VARIABLE
@@ -11,35 +11,35 @@ import {
11
11
  isCodexQuestionLeftWithTheLocalClient,
12
12
  planCodexElicitation,
13
13
  reportOwnedQuestion
14
- } from "./chunk-YGMSDYOH.js";
15
- import "./chunk-NGSJHUQN.js";
16
- import "./chunk-KHGW7THQ.js";
17
- import "./chunk-UFWRBHTV.js";
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-SI2CJ2BB.js";
20
- import "./chunk-J3W32P43.js";
21
- import "./chunk-PDRPVVZX.js";
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-KG7GT7UW.js";
24
+ import "./chunk-CB2RYMAO.js";
25
25
  import {
26
26
  writeDegraded
27
- } from "./chunk-CRJDKGEF.js";
27
+ } from "./chunk-Z6O6CDTP.js";
28
28
  import "./chunk-POFBE6ZY.js";
29
- import "./chunk-V7EWOHNV.js";
30
- import "./chunk-CTKJVVDL.js";
31
- import "./chunk-B75SIY5C.js";
32
- import "./chunk-N2KK2NSY.js";
33
- import "./chunk-YCYFREHD.js";
34
- import "./chunk-77HBRZJI.js";
35
- import "./chunk-TXDFQD2I.js";
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-6YG5PZZS.js";
38
+ import "./chunk-CMDIKFVL.js";
39
39
  import "./chunk-ZVU6WMMU.js";
40
40
  import {
41
41
  canonicalJsonText
42
- } from "./chunk-OS32P4RZ.js";
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-TXDFQD2I.js";
7
- import "./chunk-6YG5PZZS.js";
8
- import "./chunk-OS32P4RZ.js";
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-R2RCFCFW.js";
11
- import "./chunk-CQ3YV6QI.js";
12
- import "./chunk-KHGW7THQ.js";
13
- import "./chunk-UFWRBHTV.js";
14
- import "./chunk-J3W32P43.js";
15
- import "./chunk-6JZNZTGZ.js";
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-YCYFREHD.js";
18
- import "./chunk-77HBRZJI.js";
17
+ import "./chunk-KNVTKFDP.js";
18
+ import "./chunk-6CDA4R5L.js";
19
19
  import "./chunk-KZERVKTD.js";
20
- import "./chunk-6YG5PZZS.js";
20
+ import "./chunk-CMDIKFVL.js";
21
21
  import "./chunk-ZVU6WMMU.js";
22
- import "./chunk-OS32P4RZ.js";
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-N2KK2NSY.js";
6
- import "./chunk-YCYFREHD.js";
7
- import "./chunk-77HBRZJI.js";
5
+ } from "./chunk-ZFUSWR2P.js";
6
+ import "./chunk-KNVTKFDP.js";
7
+ import "./chunk-6CDA4R5L.js";
8
8
  import "./chunk-ZVU6WMMU.js";
9
- import "./chunk-OS32P4RZ.js";
9
+ import "./chunk-WOFHN2IZ.js";
10
10
  import "./chunk-MLKGABMK.js";
11
11
  export {
12
12
  getMachineId,