@pushary/agent-hooks 1.9.66 → 1.9.68
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 +15 -0
- package/data/SKILL.md +1 -1
- package/data/cursor-plugin/skills/pushary/SKILL.md +1 -1
- package/data/vscode-plugin/skills/pushary/SKILL.md +1 -1
- package/dist/{api-GDSVUTI2.js → api-6Q7XIB67.js} +10 -10
- package/dist/bin/pushary-bell-hook.js +25 -25
- package/dist/bin/pushary-bell.js +10 -10
- package/dist/bin/pushary-claude.js +26 -26
- package/dist/bin/pushary-clean.js +73 -74
- package/dist/bin/pushary-codex-bridge.js +21 -21
- package/dist/bin/pushary-codex-hook.js +30 -30
- package/dist/bin/pushary-codex-session.js +8 -8
- package/dist/bin/pushary-codex.js +13 -13
- package/dist/bin/pushary-connect.js +28 -27
- package/dist/bin/pushary-cowork.js +5 -5
- package/dist/bin/pushary-daemon.js +40 -39
- package/dist/bin/pushary-disconnect.js +25 -25
- package/dist/bin/pushary-doctor.js +126 -72
- package/dist/bin/pushary-elicitation-hook.js +25 -25
- package/dist/bin/pushary-gemini-bridge.js +15 -15
- package/dist/bin/pushary-gemini-hook.js +27 -27
- package/dist/bin/pushary-hook.js +29 -29
- package/dist/bin/pushary-login.js +20 -19
- package/dist/bin/pushary-logout.js +26 -27
- package/dist/bin/pushary-mcp.js +11 -11
- package/dist/bin/pushary-mode.js +16 -15
- package/dist/bin/pushary-notification-hook.js +24 -24
- package/dist/bin/pushary-opencode-hook.js +26 -26
- package/dist/bin/pushary-permission-denied-hook.js +29 -29
- package/dist/bin/pushary-permission-hook.js +29 -29
- package/dist/bin/pushary-post-hook.js +24 -24
- package/dist/bin/pushary-prompt-hook.js +24 -24
- package/dist/bin/pushary-session-end-hook.js +26 -26
- package/dist/bin/pushary-session-start-hook.js +34 -33
- package/dist/bin/pushary-setup.js +115 -98
- package/dist/bin/pushary-stats.js +5 -5
- package/dist/bin/pushary-status.js +37 -35
- package/dist/bin/pushary-stop-hook.js +24 -24
- package/dist/bin/pushary-stopfailure-hook.js +24 -24
- package/dist/bin/pushary-suggestions.js +15 -14
- package/dist/bin/pushary-transcript-register.js +16 -16
- package/dist/bin/pushary-transcripts.js +18 -17
- package/dist/bin/pushary-upgrade.js +66 -38
- package/dist/bin/pushary-wait.js +26 -20
- package/dist/bin/pushary.js +7 -7
- package/dist/{chunk-ZJV7SFIJ.js → chunk-2HMKZYF5.js} +1 -1
- package/dist/{chunk-IA5VWIHV.js → chunk-2VYQG2HG.js} +2 -2
- package/dist/{chunk-A47UKPC7.js → chunk-32OSSYGZ.js} +1 -1
- package/dist/{chunk-DBUHSUL7.js → chunk-4TIN3T2A.js} +1 -1
- package/dist/{chunk-JL3SZJJP.js → chunk-53Q4LRBU.js} +2 -2
- package/dist/{chunk-HUGVJBDN.js → chunk-53RH3ZIK.js} +2 -2
- package/dist/{chunk-2BL6KWN7.js → chunk-6IFEYELN.js} +9 -9
- package/dist/{chunk-DKMVVBXO.js → chunk-6VFZVL65.js} +55 -13
- package/dist/{chunk-YQDCTID4.js → chunk-73DHP3JX.js} +4 -4
- package/dist/{chunk-G6VJZ3RB.js → chunk-77L2TNJW.js} +1 -1
- package/dist/{chunk-IQ3GKPFM.js → chunk-77QP22FL.js} +1 -1
- package/dist/{chunk-VURDLVAQ.js → chunk-7S7NTMDJ.js} +3 -3
- package/dist/{chunk-4APD2DPI.js → chunk-7SKGS7QN.js} +53 -3
- package/dist/chunk-7V63A4AI.js +25 -0
- package/dist/{chunk-6BGVSV2Q.js → chunk-7YJSDXLM.js} +1 -1
- package/dist/{chunk-MNNQEUQC.js → chunk-AJIT4SCL.js} +27 -8
- package/dist/{chunk-QR2QWGQI.js → chunk-BSMHSN3Y.js} +3 -3
- package/dist/{chunk-R7C2FS33.js → chunk-C4EDAHXI.js} +1 -1
- package/dist/{chunk-7LK3Y6ET.js → chunk-CB4U6WRP.js} +6 -6
- package/dist/chunk-D6W7QDQE.js +2298 -0
- package/dist/{chunk-V4EOFOB2.js → chunk-E5PEOVUJ.js} +6 -6
- package/dist/{chunk-32ZT2ATY.js → chunk-EOWHEZHD.js} +8 -8
- package/dist/{chunk-57NTMVMI.js → chunk-EUU5PDUI.js} +6 -6
- package/dist/{chunk-XXIJBYNW.js → chunk-GMHQYX3D.js} +1 -1
- package/dist/{chunk-V3YBVOTZ.js → chunk-I5FFSOCV.js} +2 -2
- package/dist/{chunk-RJ6JEHCP.js → chunk-JAKWPQ2L.js} +1 -1
- package/dist/{chunk-XDDSURY3.js → chunk-JPVV27O2.js} +3 -3
- package/dist/{chunk-GWYCKTXS.js → chunk-K4TSXWVX.js} +5 -5
- package/dist/chunk-LF2NSOAQ.js +299 -0
- package/dist/{chunk-6RJZSBPD.js → chunk-LGCVAE52.js} +1 -1
- package/dist/{chunk-GDLT32I4.js → chunk-LQAAOXYJ.js} +21 -13
- package/dist/{chunk-3ELJIG2R.js → chunk-MCNHNIRC.js} +3 -3
- package/dist/{chunk-XIJTXRWB.js → chunk-METUT7V4.js} +2 -2
- package/dist/{chunk-MDIGG3Q7.js → chunk-MFWHANKG.js} +3 -3
- package/dist/{chunk-GECU7V44.js → chunk-MHC34X5A.js} +3 -3
- package/dist/{chunk-376TUN72.js → chunk-MMTA7UKA.js} +3 -3
- package/dist/{chunk-XGFFNERF.js → chunk-MUDUWF74.js} +1 -1
- package/dist/{chunk-KS3O6O7E.js → chunk-NAQCWM4U.js} +3 -3
- package/dist/{chunk-TQNFDNJA.js → chunk-NKPSJOHJ.js} +6 -6
- package/dist/{chunk-DPU6H4JY.js → chunk-NLDEC4Y7.js} +3 -3
- package/dist/{chunk-XEXF2OFZ.js → chunk-NWN6GGJL.js} +2 -2
- package/dist/{chunk-IGO3AGZK.js → chunk-O655YCOG.js} +4 -4
- package/dist/{chunk-5FJDODOA.js → chunk-ODAAK2RZ.js} +3 -3
- package/dist/{chunk-AVWECJSN.js → chunk-ORHVVRVL.js} +2 -2
- package/dist/{chunk-YB3HMDKE.js → chunk-P4XZX7CL.js} +2 -2
- package/dist/{chunk-CNJ7SI5V.js → chunk-PBEW5CJK.js} +4 -4
- package/dist/{chunk-CN6JFM62.js → chunk-PEPRUUGM.js} +15 -6
- package/dist/{chunk-QN25WBXL.js → chunk-PGOPIIOQ.js} +7 -7
- package/dist/{chunk-Q5RNYE2L.js → chunk-PZZKXX6Q.js} +4 -4
- package/dist/{chunk-SVKCYUYP.js → chunk-Q6JXE3PD.js} +9 -9
- package/dist/{chunk-ZAZUDYSF.js → chunk-QYTOYNV2.js} +5 -5
- package/dist/{chunk-3FQX74E4.js → chunk-REQO3WWO.js} +23 -8
- package/dist/{chunk-EJR5JXMV.js → chunk-RQOT6QL3.js} +43 -5
- package/dist/{chunk-AWGBL4P3.js → chunk-RWXDWOQQ.js} +89 -41
- package/dist/{chunk-6ZXCWK27.js → chunk-SL7CIZCL.js} +60 -6
- package/dist/{chunk-3EZP5ZPS.js → chunk-TVVJ6OYG.js} +4 -4
- package/dist/{chunk-B6JC676X.js → chunk-UC2J5RR4.js} +1 -1
- package/dist/{chunk-26W46E46.js → chunk-UETS2WEA.js} +27 -10
- package/dist/{chunk-EU2ZOZC3.js → chunk-UXN73YAE.js} +3 -3
- package/dist/{chunk-XFQAK35L.js → chunk-VHMZPN3N.js} +1 -1
- package/dist/{chunk-45KMS76L.js → chunk-VKZ3RJ5U.js} +1 -1
- package/dist/{chunk-T6YLXO6N.js → chunk-VRFFMTIG.js} +4 -4
- package/dist/{chunk-DIUTSF6I.js → chunk-WPOXZPEH.js} +4 -4
- package/dist/{chunk-GO7YKPT3.js → chunk-X2MTVD4W.js} +1 -1
- package/dist/{chunk-5J7OZBJ4.js → chunk-XQKB4LEK.js} +2 -2
- package/dist/{chunk-QOIPUYUD.js → chunk-XZKSUJ55.js} +1 -1
- package/dist/{chunk-RSZQEEEW.js → chunk-YZHJQG6W.js} +8 -6
- package/dist/{chunk-UTAARXYQ.js → chunk-ZK5WYAMI.js} +1 -1
- package/dist/{codex-app-cards-switch-W7OLKOMO.js → codex-app-cards-switch-VZ4XIDJO.js} +11 -11
- package/dist/{codex-desktop-launch-U6V3AXZF.js → codex-desktop-launch-CX2IE5BI.js} +1 -1
- package/dist/{codex-session-launch-EFU46WBL.js → codex-session-launch-WUIM6ZGA.js} +18 -18
- package/dist/{config-UC4LMCNX.js → config-OBGYURFX.js} +3 -3
- package/dist/{global-upgrade-ABF5O3HU.js → global-upgrade-XZ5L7LDB.js} +10 -10
- package/dist/{identity-3ZUZPHN6.js → identity-TGQPFIE4.js} +4 -4
- package/dist/{live-capabilities-BXWXJARK.js → live-capabilities-JHESROAP.js} +5 -5
- package/dist/{paths-FO76CFRQ.js → paths-EOMNC4QM.js} +7 -3
- package/dist/{reapply-3T3DFUAI.js → reapply-J5HHUUBE.js} +27 -26
- package/dist/src/index.js +28 -28
- package/dist/{upgrade-lock-EZ5JIPJE.js → upgrade-lock-VQORI6G5.js} +4 -4
- package/dist/{usage-Y6BL7RUD.js → usage-KX2HN47E.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-QBNICXMC.js +0 -615
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.68
|
|
4
|
+
|
|
5
|
+
- fx: `pushary upgrade` switches a `pushary` server you added to `~/.fx/mcp.json` by hand as an HTTP server (`https://pushary.com/api/mcp/mcp`) to the local bridge that setup writes. fx's MCP-v2 engine (`FX_MCP_ENGINE=v2`) keeps that HTTP connection open between calls. Pushary's host closes a connection idle for about six minutes, and fx sends the next call on the closed connection. That call never reached Pushary, and fx reported "the server went away. The tool may have run." The bridge opens a new connection when it needs one, so the first call after an idle stretch arrives. Your other fx servers, your permission rules and your question settings stay as they are. Restart fx, or run `/mcp reload`, after the upgrade.
|
|
6
|
+
- The daily update makes the same switch. Neither switches when no Pushary key is saved on the machine, or when the bridge is not installed globally, because fx would then lose Pushary altogether. `pushary upgrade` says which, and to run `npx pushary@latest setup --agents fx`.
|
|
7
|
+
- Setup, upgrade and `pushary doctor` name any other fx server that reaches Pushary over HTTP, under a name other than `pushary`, and say to remove it, so fx does not see Pushary's tools twice.
|
|
8
|
+
|
|
9
|
+
## 1.9.67
|
|
10
|
+
|
|
11
|
+
- Hermes: setup installs the Pushary plugin as a folder in `~/.hermes/plugins/pushary`, where Hermes keeps your own plugins, instead of pip-installing it into Hermes's old virtualenv. Hermes v0.21.6 and later run from a Python they manage and rebuild on every `hermes update`, which left the pip copy behind and silently unloaded Pushary. The folder survives updates. Setup turns the plugin on with `hermes plugins enable pushary` and `hermes config set`, and never restarts Hermes for you.
|
|
12
|
+
- `pushary upgrade` moves a Hermes setup from before this release over to the folder, removes the old pip copy Hermes would otherwise load, and tells you to run `hermes gateway restart`.
|
|
13
|
+
- Setup no longer turns off Hermes's `clarify` tool. While the plugin is loaded it sends Hermes's questions to your phone through `pushary_ask`; without the plugin Hermes asks in its own prompt. Setups from before this release get `clarify` back.
|
|
14
|
+
- `pushary doctor` reports Hermes as connected only when the running Hermes loaded the plugin, and says when Hermes needs a restart, runs an older copy, or has the plugin switched off. It no longer asks for the global package when Pushary for Mac saved the key.
|
|
15
|
+
- Setup finds the `hermes` command in `~/.local/bin` and Homebrew when it is not on your PATH, and follows Hermes profiles (`HERMES_HOME` and `active_profile`).
|
|
16
|
+
- `pushary clean` removes the plugin folder only if Pushary installed it, and leaves a Hermes that Pushary for Mac connected, and the key the app saved for it, to the app. Neither setup nor the Mac app writes an older plugin over a newer one.
|
|
17
|
+
|
|
3
18
|
## 1.9.66
|
|
4
19
|
|
|
5
20
|
- In Claude Code, an approval stays answerable from your phone and from the terminal at the same time, and whichever answers first wins. Before, Pushary held the call for its window (60 seconds by default) while the terminal showed only a spinner, then withdrew the phone question and left only the terminal. Now Claude Code shows its own prompt straight away, Pushary sends the same question to your phone, and the phone keeps it for up to 10 minutes. Answer at the terminal and Pushary withdraws the phone question. This applies in an interactive Claude Code session in default or accept-edits mode, when only Pushary's defaults ask about the call. In bypass mode, and in `claude -p` and other headless runs, there is no prompt to answer, so Pushary still holds the call as before.
|
package/data/SKILL.md
CHANGED
|
@@ -272,7 +272,7 @@ brew install --cask pushary/tap/pushary
|
|
|
272
272
|
|
|
273
273
|
They can also download it from https://pushary.com/download. It needs macOS 14 or later. It is not in the App Store.
|
|
274
274
|
|
|
275
|
-
The command line works on macOS too. Offer it if the user prefers the terminal
|
|
275
|
+
The command line works on macOS too. Offer it if the user prefers the terminal. The app connects Hermes as well.
|
|
276
276
|
|
|
277
277
|
### Branch 3. `Linux` or `Windows_NT`
|
|
278
278
|
|
|
@@ -265,7 +265,7 @@ brew install --cask pushary/tap/pushary
|
|
|
265
265
|
|
|
266
266
|
They can also download it from https://pushary.com/download. It needs macOS 14 or later. It is not in the App Store.
|
|
267
267
|
|
|
268
|
-
The command line works on macOS too. Offer it if the user prefers the terminal
|
|
268
|
+
The command line works on macOS too. Offer it if the user prefers the terminal. The app connects Hermes as well.
|
|
269
269
|
|
|
270
270
|
### Branch 3. `Linux` or `Windows_NT`
|
|
271
271
|
|
|
@@ -265,7 +265,7 @@ brew install --cask pushary/tap/pushary
|
|
|
265
265
|
|
|
266
266
|
They can also download it from https://pushary.com/download. It needs macOS 14 or later. It is not in the App Store.
|
|
267
267
|
|
|
268
|
-
The command line works on macOS too. Offer it if the user prefers the terminal
|
|
268
|
+
The command line works on macOS too. Offer it if the user prefers the terminal. The app connects Hermes as well.
|
|
269
269
|
|
|
270
270
|
### Branch 3. `Linux` or `Windows_NT`
|
|
271
271
|
|
|
@@ -17,23 +17,23 @@ import {
|
|
|
17
17
|
waitForQuestion,
|
|
18
18
|
waitsForThePhone,
|
|
19
19
|
withdrawQuestion
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-QYTOYNV2.js";
|
|
21
21
|
import "./chunk-POFBE6ZY.js";
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-PZZKXX6Q.js";
|
|
23
|
+
import "./chunk-BSMHSN3Y.js";
|
|
24
|
+
import "./chunk-MHC34X5A.js";
|
|
25
|
+
import "./chunk-2VYQG2HG.js";
|
|
26
26
|
import "./chunk-PPY5N2E6.js";
|
|
27
27
|
import "./chunk-KZERVKTD.js";
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-LQAAOXYJ.js";
|
|
29
|
+
import "./chunk-NAQCWM4U.js";
|
|
30
|
+
import "./chunk-32OSSYGZ.js";
|
|
31
|
+
import "./chunk-X2MTVD4W.js";
|
|
32
32
|
import "./chunk-QTOLNRET.js";
|
|
33
33
|
import {
|
|
34
34
|
DECISION_STOP_REASON,
|
|
35
35
|
UNVERIFIABLE_APPROVAL_REASON
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-RQOT6QL3.js";
|
|
37
37
|
import "./chunk-MLKGABMK.js";
|
|
38
38
|
export {
|
|
39
39
|
ABANDONED_WAIT,
|
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handleBell
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-LGCVAE52.js";
|
|
5
5
|
import {
|
|
6
6
|
readHookInput
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-PGOPIIOQ.js";
|
|
8
|
+
import "../chunk-Q6JXE3PD.js";
|
|
9
|
+
import "../chunk-4TIN3T2A.js";
|
|
10
|
+
import "../chunk-TVVJ6OYG.js";
|
|
11
|
+
import "../chunk-EUU5PDUI.js";
|
|
12
|
+
import "../chunk-73DHP3JX.js";
|
|
13
|
+
import "../chunk-ZK5WYAMI.js";
|
|
14
|
+
import "../chunk-77QP22FL.js";
|
|
15
15
|
import "../chunk-NMUI3ZWG.js";
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-NWN6GGJL.js";
|
|
17
|
+
import "../chunk-MUDUWF74.js";
|
|
18
18
|
import "../chunk-XHKBHWLX.js";
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-PBEW5CJK.js";
|
|
20
|
+
import "../chunk-6IFEYELN.js";
|
|
21
|
+
import "../chunk-GMHQYX3D.js";
|
|
22
|
+
import "../chunk-QYTOYNV2.js";
|
|
23
23
|
import "../chunk-POFBE6ZY.js";
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
27
|
-
import "../chunk-
|
|
24
|
+
import "../chunk-PZZKXX6Q.js";
|
|
25
|
+
import "../chunk-BSMHSN3Y.js";
|
|
26
|
+
import "../chunk-MHC34X5A.js";
|
|
27
|
+
import "../chunk-2VYQG2HG.js";
|
|
28
28
|
import "../chunk-PPY5N2E6.js";
|
|
29
29
|
import "../chunk-KZERVKTD.js";
|
|
30
|
-
import "../chunk-
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-
|
|
30
|
+
import "../chunk-METUT7V4.js";
|
|
31
|
+
import "../chunk-LQAAOXYJ.js";
|
|
32
|
+
import "../chunk-NAQCWM4U.js";
|
|
33
|
+
import "../chunk-32OSSYGZ.js";
|
|
34
|
+
import "../chunk-X2MTVD4W.js";
|
|
35
35
|
import "../chunk-QTOLNRET.js";
|
|
36
|
-
import "../chunk-
|
|
36
|
+
import "../chunk-RQOT6QL3.js";
|
|
37
37
|
import "../chunk-MLKGABMK.js";
|
|
38
38
|
|
|
39
39
|
// bin/pushary-bell-hook.ts
|
package/dist/bin/pushary-bell.js
CHANGED
|
@@ -5,40 +5,40 @@ import {
|
|
|
5
5
|
liveAgentCount,
|
|
6
6
|
ring,
|
|
7
7
|
upgradeThreshold
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-LGCVAE52.js";
|
|
9
9
|
import {
|
|
10
10
|
createIo
|
|
11
11
|
} from "../chunk-FO3MDD26.js";
|
|
12
12
|
import {
|
|
13
13
|
exitOnHelpFlag
|
|
14
|
-
} from "../chunk-
|
|
14
|
+
} from "../chunk-77L2TNJW.js";
|
|
15
15
|
import {
|
|
16
16
|
addBellHooks,
|
|
17
17
|
bellInstalled,
|
|
18
18
|
removeBellHooks
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-77QP22FL.js";
|
|
20
20
|
import {
|
|
21
21
|
parseFlags
|
|
22
22
|
} from "../chunk-NMUI3ZWG.js";
|
|
23
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-PBEW5CJK.js";
|
|
24
24
|
import "../chunk-PPY5N2E6.js";
|
|
25
25
|
import {
|
|
26
26
|
EXIT
|
|
27
27
|
} from "../chunk-KZERVKTD.js";
|
|
28
|
-
import "../chunk-
|
|
28
|
+
import "../chunk-METUT7V4.js";
|
|
29
29
|
import {
|
|
30
30
|
claudeSettings
|
|
31
|
-
} from "../chunk-
|
|
31
|
+
} from "../chunk-LQAAOXYJ.js";
|
|
32
32
|
import {
|
|
33
33
|
readJsonSafe,
|
|
34
34
|
writeJsonAtomic
|
|
35
|
-
} from "../chunk-
|
|
36
|
-
import "../chunk-
|
|
37
|
-
import "../chunk-
|
|
35
|
+
} from "../chunk-NAQCWM4U.js";
|
|
36
|
+
import "../chunk-32OSSYGZ.js";
|
|
37
|
+
import "../chunk-X2MTVD4W.js";
|
|
38
38
|
import "../chunk-QTOLNRET.js";
|
|
39
39
|
import {
|
|
40
40
|
isRecord
|
|
41
|
-
} from "../chunk-
|
|
41
|
+
} from "../chunk-RQOT6QL3.js";
|
|
42
42
|
import "../chunk-MLKGABMK.js";
|
|
43
43
|
|
|
44
44
|
// bin/pushary-bell.ts
|
|
@@ -2,43 +2,43 @@
|
|
|
2
2
|
import {
|
|
3
3
|
WRAPPER_ACTIVE_ENV,
|
|
4
4
|
findClaudeBinary
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-XQKB4LEK.js";
|
|
6
6
|
import {
|
|
7
7
|
SESSION_IDLE_TIMEOUT_MS,
|
|
8
8
|
describeIdleWindow,
|
|
9
9
|
startProcessOwnership,
|
|
10
10
|
withSpawnProcessOwnership
|
|
11
|
-
} from "../chunk-
|
|
12
|
-
import "../chunk-
|
|
11
|
+
} from "../chunk-MCNHNIRC.js";
|
|
12
|
+
import "../chunk-JAKWPQ2L.js";
|
|
13
13
|
import {
|
|
14
14
|
announceSubscriptionRequired,
|
|
15
15
|
isDeferAnswer
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-2HMKZYF5.js";
|
|
17
17
|
import {
|
|
18
18
|
claudeTranscriptPath,
|
|
19
19
|
loadSessionKey,
|
|
20
20
|
registerTranscript,
|
|
21
21
|
registeredTranscriptEnabled
|
|
22
|
-
} from "../chunk-
|
|
23
|
-
import "../chunk-
|
|
22
|
+
} from "../chunk-Q6JXE3PD.js";
|
|
23
|
+
import "../chunk-4TIN3T2A.js";
|
|
24
24
|
import {
|
|
25
25
|
ensureDaemonRunning
|
|
26
|
-
} from "../chunk-
|
|
27
|
-
import "../chunk-
|
|
28
|
-
import "../chunk-
|
|
29
|
-
import "../chunk-
|
|
26
|
+
} from "../chunk-EUU5PDUI.js";
|
|
27
|
+
import "../chunk-73DHP3JX.js";
|
|
28
|
+
import "../chunk-ZK5WYAMI.js";
|
|
29
|
+
import "../chunk-77QP22FL.js";
|
|
30
30
|
import "../chunk-NMUI3ZWG.js";
|
|
31
31
|
import {
|
|
32
32
|
encryptRecord
|
|
33
|
-
} from "../chunk-
|
|
33
|
+
} from "../chunk-NWN6GGJL.js";
|
|
34
34
|
import {
|
|
35
35
|
transcriptsEnabled
|
|
36
|
-
} from "../chunk-
|
|
36
|
+
} from "../chunk-MUDUWF74.js";
|
|
37
37
|
import {
|
|
38
38
|
needsShell,
|
|
39
39
|
spawnClaude
|
|
40
40
|
} from "../chunk-XHKBHWLX.js";
|
|
41
|
-
import "../chunk-
|
|
41
|
+
import "../chunk-PBEW5CJK.js";
|
|
42
42
|
import {
|
|
43
43
|
DEFAULT_SESSION,
|
|
44
44
|
UNNAMED_ACTION,
|
|
@@ -55,10 +55,10 @@ import {
|
|
|
55
55
|
reportEvent,
|
|
56
56
|
savePendingCommand,
|
|
57
57
|
scopePathFor
|
|
58
|
-
} from "../chunk-
|
|
58
|
+
} from "../chunk-6IFEYELN.js";
|
|
59
59
|
import {
|
|
60
60
|
repoKeyFor
|
|
61
|
-
} from "../chunk-
|
|
61
|
+
} from "../chunk-GMHQYX3D.js";
|
|
62
62
|
import {
|
|
63
63
|
askUser,
|
|
64
64
|
cancelQuestion,
|
|
@@ -70,30 +70,30 @@ import {
|
|
|
70
70
|
waitForAnswer,
|
|
71
71
|
waitsForThePhone,
|
|
72
72
|
withdrawQuestion
|
|
73
|
-
} from "../chunk-
|
|
73
|
+
} from "../chunk-QYTOYNV2.js";
|
|
74
74
|
import "../chunk-POFBE6ZY.js";
|
|
75
75
|
import {
|
|
76
76
|
SubscriptionRequiredError
|
|
77
|
-
} from "../chunk-
|
|
78
|
-
import "../chunk-
|
|
79
|
-
import "../chunk-
|
|
77
|
+
} from "../chunk-PZZKXX6Q.js";
|
|
78
|
+
import "../chunk-BSMHSN3Y.js";
|
|
79
|
+
import "../chunk-MHC34X5A.js";
|
|
80
80
|
import {
|
|
81
81
|
getMachineId
|
|
82
|
-
} from "../chunk-
|
|
82
|
+
} from "../chunk-2VYQG2HG.js";
|
|
83
83
|
import "../chunk-PPY5N2E6.js";
|
|
84
84
|
import "../chunk-KZERVKTD.js";
|
|
85
|
-
import "../chunk-
|
|
85
|
+
import "../chunk-METUT7V4.js";
|
|
86
86
|
import {
|
|
87
87
|
claudeConfigDir
|
|
88
|
-
} from "../chunk-
|
|
89
|
-
import "../chunk-
|
|
88
|
+
} from "../chunk-LQAAOXYJ.js";
|
|
89
|
+
import "../chunk-NAQCWM4U.js";
|
|
90
90
|
import {
|
|
91
91
|
getApiKey,
|
|
92
92
|
getBaseUrl
|
|
93
|
-
} from "../chunk-
|
|
93
|
+
} from "../chunk-32OSSYGZ.js";
|
|
94
94
|
import {
|
|
95
95
|
NPX_LATEST_COMMAND
|
|
96
|
-
} from "../chunk-
|
|
96
|
+
} from "../chunk-X2MTVD4W.js";
|
|
97
97
|
import "../chunk-QTOLNRET.js";
|
|
98
98
|
import {
|
|
99
99
|
DECISION_STOP_REASON,
|
|
@@ -106,7 +106,7 @@ import {
|
|
|
106
106
|
refusesWhenUnanswered,
|
|
107
107
|
resolveGate,
|
|
108
108
|
timeoutActionWithoutLocalPrompt
|
|
109
|
-
} from "../chunk-
|
|
109
|
+
} from "../chunk-RQOT6QL3.js";
|
|
110
110
|
import "../chunk-MLKGABMK.js";
|
|
111
111
|
|
|
112
112
|
// src/wrapper/localPassthrough.ts
|
|
@@ -15,51 +15,53 @@ import {
|
|
|
15
15
|
storedMacAppState,
|
|
16
16
|
storedPusharyKeychainServices,
|
|
17
17
|
waitForMacAppExit
|
|
18
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-NLDEC4Y7.js";
|
|
19
19
|
import {
|
|
20
20
|
PUSHARY_SKILL_NAME,
|
|
21
21
|
PUSHARY_SKILL_SOURCE,
|
|
22
22
|
createGuards
|
|
23
23
|
} from "../chunk-EUW7JL2K.js";
|
|
24
|
-
import "../chunk-
|
|
24
|
+
import "../chunk-ORHVVRVL.js";
|
|
25
25
|
import "../chunk-XCEN33UP.js";
|
|
26
26
|
import {
|
|
27
27
|
describeCliKeyRevocation,
|
|
28
28
|
planCliKeyRevocations,
|
|
29
29
|
readCliHeldKeys,
|
|
30
30
|
revokeCliKeys
|
|
31
|
-
} from "../chunk-
|
|
32
|
-
import "../chunk-26W46E46.js";
|
|
31
|
+
} from "../chunk-EOWHEZHD.js";
|
|
33
32
|
import {
|
|
34
33
|
isCursorPluginLeftover,
|
|
35
34
|
releaseSoleGate,
|
|
36
35
|
withoutPusharyCursorHooks
|
|
37
|
-
} from "../chunk-
|
|
36
|
+
} from "../chunk-O655YCOG.js";
|
|
38
37
|
import {
|
|
39
|
-
HERMES_PIP_PACKAGE,
|
|
40
|
-
readHermesStatus,
|
|
41
|
-
resolveHermesPython,
|
|
42
|
-
runHermesConfigScript,
|
|
43
38
|
shortenHome,
|
|
44
39
|
unregisterPluginLocation,
|
|
45
40
|
vscodeSettingsTargets
|
|
46
|
-
} from "../chunk-
|
|
41
|
+
} from "../chunk-LF2NSOAQ.js";
|
|
47
42
|
import {
|
|
43
|
+
configFileHoldsMacAppKey,
|
|
48
44
|
macAppKeepsMcpEntry,
|
|
49
45
|
mcpServerBearer,
|
|
50
46
|
pusharyKey,
|
|
51
47
|
readMacAppAgentKey,
|
|
52
48
|
setupReceiptKey
|
|
53
|
-
} from "../chunk-
|
|
49
|
+
} from "../chunk-PEPRUUGM.js";
|
|
50
|
+
import "../chunk-7V63A4AI.js";
|
|
51
|
+
import {
|
|
52
|
+
HERMES_CONFIG_FILE,
|
|
53
|
+
defaultHermesHome,
|
|
54
|
+
hermesReceiptPaths,
|
|
55
|
+
removeHermesWiring
|
|
56
|
+
} from "../chunk-D6W7QDQE.js";
|
|
54
57
|
import "../chunk-QCGNGEGE.js";
|
|
55
|
-
import "../chunk-YB3HMDKE.js";
|
|
56
58
|
import {
|
|
57
59
|
planClineRemoval,
|
|
58
60
|
planFxRemoval,
|
|
59
61
|
removeClineServer
|
|
60
|
-
} from "../chunk-
|
|
61
|
-
import "../chunk-
|
|
62
|
-
import "../chunk-
|
|
62
|
+
} from "../chunk-SL7CIZCL.js";
|
|
63
|
+
import "../chunk-ODAAK2RZ.js";
|
|
64
|
+
import "../chunk-53RH3ZIK.js";
|
|
63
65
|
import {
|
|
64
66
|
OPENCODE_ASKED_PERMISSIONS,
|
|
65
67
|
OPENCODE_PLUGIN_SIBLING,
|
|
@@ -73,15 +75,15 @@ import {
|
|
|
73
75
|
openCodePluginDir,
|
|
74
76
|
openCodePluginFile,
|
|
75
77
|
removeOpenCodeMcpServer
|
|
76
|
-
} from "../chunk-
|
|
78
|
+
} from "../chunk-CB4U6WRP.js";
|
|
77
79
|
import {
|
|
78
80
|
ansiPainter,
|
|
79
81
|
useColor
|
|
80
82
|
} from "../chunk-FO3MDD26.js";
|
|
81
83
|
import {
|
|
82
84
|
exitOnHelpFlag
|
|
83
|
-
} from "../chunk-
|
|
84
|
-
import "../chunk-
|
|
85
|
+
} from "../chunk-77L2TNJW.js";
|
|
86
|
+
import "../chunk-JAKWPQ2L.js";
|
|
85
87
|
import {
|
|
86
88
|
compatibleConfigFile,
|
|
87
89
|
compatibleDocuments,
|
|
@@ -93,10 +95,10 @@ import {
|
|
|
93
95
|
removeCompatibleHooks,
|
|
94
96
|
removeCompatibleMcpServer,
|
|
95
97
|
serializeConfigDocument
|
|
96
|
-
} from "../chunk-
|
|
98
|
+
} from "../chunk-TVVJ6OYG.js";
|
|
97
99
|
import {
|
|
98
100
|
disableDaemonService
|
|
99
|
-
} from "../chunk-
|
|
101
|
+
} from "../chunk-EUU5PDUI.js";
|
|
100
102
|
import {
|
|
101
103
|
hookOwnerOf,
|
|
102
104
|
isHookTakeoverReceipt,
|
|
@@ -105,9 +107,9 @@ import {
|
|
|
105
107
|
resolveBridgeStub,
|
|
106
108
|
restoreHookTakeover,
|
|
107
109
|
restoreMcpServer
|
|
108
|
-
} from "../chunk-
|
|
109
|
-
import "../chunk-
|
|
110
|
-
import "../chunk-
|
|
110
|
+
} from "../chunk-73DHP3JX.js";
|
|
111
|
+
import "../chunk-ZK5WYAMI.js";
|
|
112
|
+
import "../chunk-77QP22FL.js";
|
|
111
113
|
import {
|
|
112
114
|
parseFlags
|
|
113
115
|
} from "../chunk-NMUI3ZWG.js";
|
|
@@ -117,21 +119,21 @@ import {
|
|
|
117
119
|
isDisabledExport,
|
|
118
120
|
removeClaudeAlias,
|
|
119
121
|
shellProfileCandidates
|
|
120
|
-
} from "../chunk-
|
|
122
|
+
} from "../chunk-PBEW5CJK.js";
|
|
121
123
|
import "../chunk-E46NE7FB.js";
|
|
122
|
-
import "../chunk-
|
|
123
|
-
import "../chunk-
|
|
124
|
-
import "../chunk-
|
|
124
|
+
import "../chunk-6IFEYELN.js";
|
|
125
|
+
import "../chunk-GMHQYX3D.js";
|
|
126
|
+
import "../chunk-QYTOYNV2.js";
|
|
125
127
|
import "../chunk-POFBE6ZY.js";
|
|
126
|
-
import "../chunk-
|
|
127
|
-
import "../chunk-
|
|
128
|
-
import "../chunk-
|
|
129
|
-
import "../chunk-
|
|
128
|
+
import "../chunk-PZZKXX6Q.js";
|
|
129
|
+
import "../chunk-BSMHSN3Y.js";
|
|
130
|
+
import "../chunk-MHC34X5A.js";
|
|
131
|
+
import "../chunk-2VYQG2HG.js";
|
|
130
132
|
import "../chunk-PPY5N2E6.js";
|
|
131
133
|
import {
|
|
132
134
|
EXIT
|
|
133
135
|
} from "../chunk-KZERVKTD.js";
|
|
134
|
-
import "../chunk-
|
|
136
|
+
import "../chunk-METUT7V4.js";
|
|
135
137
|
import {
|
|
136
138
|
claudeConfigDir,
|
|
137
139
|
claudeJson,
|
|
@@ -158,10 +160,10 @@ import {
|
|
|
158
160
|
fxSettings,
|
|
159
161
|
geminiMd,
|
|
160
162
|
geminiSettings,
|
|
161
|
-
|
|
162
|
-
hermesConfigReceipt,
|
|
163
|
+
hermesAppWiringRecord,
|
|
163
164
|
hookTakeoverReceipt,
|
|
164
165
|
isClaudeMcpSnapshot,
|
|
166
|
+
pusharyConfigFile,
|
|
165
167
|
pusharyDir,
|
|
166
168
|
readCodexMcpAuth,
|
|
167
169
|
removeClaudeMcpServers,
|
|
@@ -174,20 +176,20 @@ import {
|
|
|
174
176
|
restoreCodexHookTrust,
|
|
175
177
|
vscodePluginDir,
|
|
176
178
|
vscodePluginMcp
|
|
177
|
-
} from "../chunk-
|
|
179
|
+
} from "../chunk-LQAAOXYJ.js";
|
|
178
180
|
import {
|
|
179
181
|
cleanNpmEnv,
|
|
180
182
|
globalPackageState,
|
|
181
183
|
npmIsOnPath,
|
|
182
184
|
readGlobalFolder,
|
|
183
185
|
readGlobalPrefix
|
|
184
|
-
} from "../chunk-
|
|
186
|
+
} from "../chunk-NAQCWM4U.js";
|
|
185
187
|
import {
|
|
186
188
|
getBaseUrl
|
|
187
|
-
} from "../chunk-
|
|
189
|
+
} from "../chunk-32OSSYGZ.js";
|
|
188
190
|
import {
|
|
189
191
|
NPX_LATEST_COMMAND
|
|
190
|
-
} from "../chunk-
|
|
192
|
+
} from "../chunk-X2MTVD4W.js";
|
|
191
193
|
import {
|
|
192
194
|
CLI_PACKAGE_NAMES,
|
|
193
195
|
globalPackageFolder,
|
|
@@ -201,12 +203,12 @@ import {
|
|
|
201
203
|
SUPPORT_EMAIL,
|
|
202
204
|
isValidApiKey,
|
|
203
205
|
redactSecrets
|
|
204
|
-
} from "../chunk-
|
|
206
|
+
} from "../chunk-RQOT6QL3.js";
|
|
205
207
|
import "../chunk-MLKGABMK.js";
|
|
206
208
|
|
|
207
209
|
// bin/pushary-clean.ts
|
|
208
210
|
import { existsSync as existsSync5, readFileSync as readFileSync4, copyFileSync, readdirSync as readdirSync4 } from "fs";
|
|
209
|
-
import { dirname as dirname2, join as join5 } from "path";
|
|
211
|
+
import { basename, dirname as dirname2, join as join5 } from "path";
|
|
210
212
|
import { homedir as homedir4, tmpdir } from "os";
|
|
211
213
|
import { confirm } from "@inquirer/prompts";
|
|
212
214
|
import { parse as parseTOML, stringify as stringifyTOML } from "smol-toml";
|
|
@@ -531,8 +533,6 @@ var CLAUDE_SETTINGS = claudeSettings();
|
|
|
531
533
|
var CLAUDE_SETTINGS_LOCAL = claudeSettingsLocal();
|
|
532
534
|
var CLAUDE_JSON = claudeJson();
|
|
533
535
|
var CLAUDE_MCP_RECEIPT = claudeMcpReceipt();
|
|
534
|
-
var HERMES_CONFIG_RECEIPT = hermesConfigReceipt();
|
|
535
|
-
var HERMES_CONFIG_FILE = hermesConfig();
|
|
536
536
|
var SKILL_DIR = claudeSkillDir();
|
|
537
537
|
var CURSOR_MCP = cursorUserMcp();
|
|
538
538
|
var CURSOR_PLUGIN_DIR = cursorPluginDir();
|
|
@@ -571,6 +571,33 @@ var readJson = (path) => {
|
|
|
571
571
|
};
|
|
572
572
|
var dryRun = false;
|
|
573
573
|
var did = (past) => dryRun ? `(would ${past === "cleaned" ? "clean" : past === "removed" ? "remove" : past === "uninstalled" ? "uninstall" : past})` : `(${past})`;
|
|
574
|
+
var HERMES_REMOVAL_FAILURES = {
|
|
575
|
+
receipt_invalid: "setup receipt is unreadable; left unchanged",
|
|
576
|
+
home_unknown: "Hermes would not report its settings; left unchanged",
|
|
577
|
+
plugin: "could not remove the plugin; setup receipt kept for retry",
|
|
578
|
+
settings: "could not restore config.yaml; setup receipt kept for retry"
|
|
579
|
+
};
|
|
580
|
+
var reportHermesRemoval = (outcome) => {
|
|
581
|
+
switch (outcome.kind) {
|
|
582
|
+
case "not_found":
|
|
583
|
+
console.log(` ${skip} Hermes ${dim("(not found)")}`);
|
|
584
|
+
return false;
|
|
585
|
+
case "kept_for_mac_app":
|
|
586
|
+
console.log(` ${skip} Hermes ${dim("(kept: the Mac app connected it)")}`);
|
|
587
|
+
return false;
|
|
588
|
+
case "runtime_missing":
|
|
589
|
+
console.log(` ${skip} Hermes ${dim("(hermes command not found; setup receipt kept for retry)")}`);
|
|
590
|
+
return true;
|
|
591
|
+
case "failed":
|
|
592
|
+
console.log(` ${skip} Hermes ${dim(`(${HERMES_REMOVAL_FAILURES[outcome.step]})`)}`);
|
|
593
|
+
return true;
|
|
594
|
+
case "removed":
|
|
595
|
+
if (outcome.pluginRemoved) console.log(` ${check} Hermes plugin ${dim(did("removed"))}`);
|
|
596
|
+
if (outcome.dryRun) wouldNote("rewrite", join5(defaultHermesHome(), HERMES_CONFIG_FILE));
|
|
597
|
+
console.log(` ${check} Hermes config ${dim(outcome.dryRun ? "(would restore)" : "(restored)")} ${dim("(Pushary settings)")}`);
|
|
598
|
+
return false;
|
|
599
|
+
}
|
|
600
|
+
};
|
|
574
601
|
var wouldNote = (action, path) => {
|
|
575
602
|
console.log(` ${dim("would")} ${action} ${path}`);
|
|
576
603
|
};
|
|
@@ -1149,37 +1176,8 @@ var main = async () => {
|
|
|
1149
1176
|
removeFxConfiguration();
|
|
1150
1177
|
removeFxInstructions();
|
|
1151
1178
|
removeClineConfiguration();
|
|
1152
|
-
const
|
|
1153
|
-
if (
|
|
1154
|
-
const configRun = runHermesConfigScript(hermesPython, dryRun ? "clean-preview" : "clean", HERMES_CONFIG_RECEIPT);
|
|
1155
|
-
if (configRun === "failed") {
|
|
1156
|
-
incompleteClean = true;
|
|
1157
|
-
console.log(` ${skip} Hermes config ${dim("(could not update config.yaml)")}`);
|
|
1158
|
-
} else {
|
|
1159
|
-
if (configRun === "changed") {
|
|
1160
|
-
if (dryRun) wouldNote("rewrite", HERMES_CONFIG_FILE);
|
|
1161
|
-
console.log(` ${check} Hermes config ${dim(did("removed"))} ${dim("(Pushary settings)")}`);
|
|
1162
|
-
} else {
|
|
1163
|
-
console.log(` ${skip} Hermes config ${dim("(no Pushary settings)")}`);
|
|
1164
|
-
}
|
|
1165
|
-
if (readHermesStatus(hermesPython)?.pluginInstalled === false) {
|
|
1166
|
-
console.log(` ${skip} Hermes plugin ${dim("(not installed)")}`);
|
|
1167
|
-
} else {
|
|
1168
|
-
try {
|
|
1169
|
-
guards.execFile(hermesPython, ["-m", "pip", "uninstall", "-y", HERMES_PIP_PACKAGE], { stdio: "pipe", timeout: 6e4 }, `pip uninstall ${HERMES_PIP_PACKAGE}`);
|
|
1170
|
-
console.log(` ${check} Hermes plugin ${dim(did("uninstalled"))}`);
|
|
1171
|
-
} catch {
|
|
1172
|
-
incompleteClean = true;
|
|
1173
|
-
console.log(` ${skip} Hermes plugin ${dim("(could not uninstall; setup receipt kept for retry)")}`);
|
|
1174
|
-
}
|
|
1175
|
-
}
|
|
1176
|
-
}
|
|
1177
|
-
} else if (existsSync5(HERMES_CONFIG_RECEIPT)) {
|
|
1178
|
-
incompleteClean = true;
|
|
1179
|
-
console.log(` ${skip} Hermes ${dim("(runtime not found; setup receipt kept for retry)")}`);
|
|
1180
|
-
} else {
|
|
1181
|
-
console.log(` ${skip} Hermes ${dim("(not found)")}`);
|
|
1182
|
-
}
|
|
1179
|
+
const hermesRemoval = removeHermesWiring({ dryRun, receipts: hermesReceiptPaths(), keepMacAppWiring: keepShared, macAppWiringRecord: hermesAppWiringRecord() });
|
|
1180
|
+
if (reportHermesRemoval(hermesRemoval)) incompleteClean = true;
|
|
1183
1181
|
for (const shellFile of SHELL_FILES) {
|
|
1184
1182
|
try {
|
|
1185
1183
|
const content = readFileSync4(shellFile, "utf-8");
|
|
@@ -1226,10 +1224,11 @@ var main = async () => {
|
|
|
1226
1224
|
if (existsSync5(PUSHARY_DIR)) {
|
|
1227
1225
|
let removed = 0;
|
|
1228
1226
|
const kept = [];
|
|
1227
|
+
const macAppsHermesKey = hermesRemoval.kind === "kept_for_mac_app" && configFileHoldsMacAppKey(pusharyConfigFile()) ? basename(pusharyConfigFile()) : null;
|
|
1229
1228
|
for (const entry of readdirSync4(PUSHARY_DIR)) {
|
|
1230
1229
|
const appCardsFolder = entry === CODEX_APP_CARDS_DIRECTORY ? codexAppCardsFolderInTheLastSweep(appCardsCleanUp) : "swept_with_the_rest";
|
|
1231
1230
|
if (appCardsFolder === "left_to_the_switch") continue;
|
|
1232
|
-
if (keepShared && isAppOwned(entry) || entry === "setup" && (keepShared || incompleteClean) || appCardsFolder === "kept") {
|
|
1231
|
+
if (keepShared && isAppOwned(entry) || entry === "setup" && (keepShared || incompleteClean) || entry === macAppsHermesKey || appCardsFolder === "kept") {
|
|
1233
1232
|
kept.push(entry);
|
|
1234
1233
|
continue;
|
|
1235
1234
|
}
|