pushary 1.9.143 → 1.9.145

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 (137) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/data/SKILL.md +4 -2
  3. package/data/cursor-plugin/skills/pushary/SKILL.md +3 -1
  4. package/data/vscode-plugin/skills/pushary/SKILL.md +3 -1
  5. package/dist/{api-2YC2KSIM.js → api-KWJQMO6G.js} +11 -11
  6. package/dist/bin/pushary-audit.js +3 -3
  7. package/dist/bin/pushary-bell-hook.js +28 -28
  8. package/dist/bin/pushary-bell.js +10 -10
  9. package/dist/bin/pushary-claude.js +27 -27
  10. package/dist/bin/pushary-clean.js +35 -35
  11. package/dist/bin/pushary-codex-bridge.js +23 -23
  12. package/dist/bin/pushary-codex-hook.js +35 -35
  13. package/dist/bin/pushary-codex-session.js +8 -8
  14. package/dist/bin/pushary-codex.js +16 -16
  15. package/dist/bin/pushary-connect.js +29 -29
  16. package/dist/bin/pushary-cowork.js +5 -5
  17. package/dist/bin/pushary-daemon.js +43 -43
  18. package/dist/bin/pushary-disconnect.js +28 -28
  19. package/dist/bin/pushary-display-hook.js +7 -0
  20. package/dist/bin/pushary-doctor.js +58 -43
  21. package/dist/bin/pushary-elicitation-hook.js +28 -28
  22. package/dist/bin/pushary-gemini-bridge.js +17 -17
  23. package/dist/bin/pushary-gemini-hook.js +32 -32
  24. package/dist/bin/pushary-hook.js +35 -35
  25. package/dist/bin/pushary-login.js +21 -21
  26. package/dist/bin/pushary-logout.js +27 -27
  27. package/dist/bin/pushary-mcp.js +12 -12
  28. package/dist/bin/pushary-mode.js +15 -15
  29. package/dist/bin/pushary-notification-hook.js +27 -27
  30. package/dist/bin/pushary-opencode-hook.js +31 -31
  31. package/dist/bin/pushary-permission-denied-hook.js +35 -35
  32. package/dist/bin/pushary-permission-hook.js +35 -35
  33. package/dist/bin/pushary-post-hook.js +28 -28
  34. package/dist/bin/pushary-prompt-hook.js +27 -27
  35. package/dist/bin/pushary-session-end-hook.js +27 -27
  36. package/dist/bin/pushary-session-start-hook.js +36 -36
  37. package/dist/bin/pushary-setup.js +122 -54
  38. package/dist/bin/pushary-stats.js +5 -5
  39. package/dist/bin/pushary-status.js +33 -33
  40. package/dist/bin/pushary-stop-hook.js +27 -27
  41. package/dist/bin/pushary-stopfailure-hook.js +27 -27
  42. package/dist/bin/pushary-suggestions.js +15 -15
  43. package/dist/bin/pushary-transcript-register.js +17 -17
  44. package/dist/bin/pushary-transcripts.js +25 -25
  45. package/dist/bin/pushary-upgrade.js +41 -41
  46. package/dist/bin/pushary-wait.js +15 -15
  47. package/dist/bin/pushary.js +7 -7
  48. package/dist/{chunk-XWYCFODT.js → chunk-2ELNRGNX.js} +3 -3
  49. package/dist/{chunk-PYSDCPZ3.js → chunk-2LGDEPVL.js} +6 -6
  50. package/dist/{chunk-5TZYAMGW.js → chunk-33BYPZ52.js} +1 -1
  51. package/dist/{chunk-LUVSHGLH.js → chunk-4KDRT3OA.js} +1 -1
  52. package/dist/{chunk-B4VIT5N3.js → chunk-4L5WPDTB.js} +1 -1
  53. package/dist/{chunk-EGUT2MWV.js → chunk-52UXNCZG.js} +3 -3
  54. package/dist/{chunk-NZHRH4RR.js → chunk-5TWW7ZUL.js} +5 -5
  55. package/dist/{chunk-DU4KCXC2.js → chunk-63WX5KZN.js} +3 -3
  56. package/dist/{chunk-DOXH5BV4.js → chunk-6IWOMXUF.js} +4 -4
  57. package/dist/{chunk-R7FSMUHG.js → chunk-6LZ7MXHD.js} +2 -1
  58. package/dist/{chunk-EMODTMHE.js → chunk-6UK4K5RS.js} +1 -1
  59. package/dist/{chunk-IG7NGXBS.js → chunk-72LP4RPC.js} +3 -2
  60. package/dist/{chunk-MMS7R3VO.js → chunk-7LTP2GHO.js} +2 -2
  61. package/dist/{chunk-QESEICW4.js → chunk-A2H256WR.js} +1 -1
  62. package/dist/{chunk-4YH326C5.js → chunk-B4JQIH5M.js} +6 -6
  63. package/dist/{chunk-4EBJ4PTZ.js → chunk-BWREST4F.js} +1 -1
  64. package/dist/{chunk-ZVJIJPQY.js → chunk-BYKRAYGD.js} +1 -1
  65. package/dist/{chunk-3VOUWGFF.js → chunk-CUR2DCZN.js} +4 -4
  66. package/dist/chunk-D3UFDCTQ.js +87 -0
  67. package/dist/{chunk-UIZE4YMU.js → chunk-DZIZ3XFL.js} +2 -2
  68. package/dist/{chunk-QQHUUPPW.js → chunk-EPWOARGR.js} +2 -2
  69. package/dist/{chunk-LWQLM3AO.js → chunk-FCSPMSDC.js} +4 -4
  70. package/dist/{chunk-X2MC2CF3.js → chunk-FNAH3YJC.js} +16 -16
  71. package/dist/{chunk-ZKKZEVNI.js → chunk-G3VSMI7K.js} +2 -2
  72. package/dist/{chunk-SYZF5SDG.js → chunk-GK5X2ZTN.js} +5 -5
  73. package/dist/{chunk-UJETZZG5.js → chunk-GURIOZE7.js} +8 -8
  74. package/dist/{chunk-7VMVMC4H.js → chunk-HOQH5CLZ.js} +1 -1
  75. package/dist/{chunk-LS6BU5RM.js → chunk-IDLOJIIS.js} +1 -1
  76. package/dist/{chunk-P5QXH5QI.js → chunk-IIN26HL7.js} +1 -1
  77. package/dist/{chunk-22CXL7YI.js → chunk-IRPIMQ7U.js} +3 -3
  78. package/dist/{chunk-4JTZZXB3.js → chunk-JKWUF776.js} +3 -3
  79. package/dist/{chunk-7QWH257P.js → chunk-JZT2LPRM.js} +1 -1
  80. package/dist/{chunk-QGJK3NAR.js → chunk-K2SKUBYY.js} +12 -12
  81. package/dist/{chunk-K7MVCPH5.js → chunk-KFALRZIN.js} +4 -4
  82. package/dist/{chunk-44Z6MQZ2.js → chunk-KGFB2LEB.js} +3 -3
  83. package/dist/{chunk-NOTW7GOC.js → chunk-KKPT7ROP.js} +2 -2
  84. package/dist/{chunk-4Z7YVVKQ.js → chunk-KS3PNTRT.js} +1 -1
  85. package/dist/{chunk-6JLANX5L.js → chunk-L4OGTRVW.js} +4 -4
  86. package/dist/{chunk-QLGLUUOP.js → chunk-LD4R2P6N.js} +1 -1
  87. package/dist/{chunk-4OX4SJGA.js → chunk-LJRPWUST.js} +3 -3
  88. package/dist/{chunk-DDJHPMBJ.js → chunk-LMU6NG2G.js} +1 -1
  89. package/dist/{chunk-C5LIS3XM.js → chunk-LQXUWXQP.js} +7 -0
  90. package/dist/{chunk-MOYEHNFP.js → chunk-MKHVLDMN.js} +2 -2
  91. package/dist/{chunk-G3G7DWR3.js → chunk-MNU5N3CQ.js} +11 -11
  92. package/dist/{chunk-BHKODM4L.js → chunk-MOC2DN42.js} +2 -2
  93. package/dist/{chunk-FS47XZCE.js → chunk-NTMKJRQ3.js} +2 -2
  94. package/dist/{chunk-WSKBXADV.js → chunk-OONMKLUF.js} +4 -4
  95. package/dist/{chunk-NQF652IG.js → chunk-PXZTCR4M.js} +2 -2
  96. package/dist/{chunk-V7CS72Q5.js → chunk-PY6CM4NK.js} +6 -6
  97. package/dist/{chunk-G7G2ZPT4.js → chunk-Q6P7G4NY.js} +4 -4
  98. package/dist/{chunk-KRSZFHNS.js → chunk-QKTF7WS6.js} +67 -4
  99. package/dist/{chunk-5RSM5DRT.js → chunk-R34RWVN2.js} +6 -5
  100. package/dist/{chunk-FYB6HBHQ.js → chunk-RO6EVL5C.js} +2 -2
  101. package/dist/{chunk-SMF4TBPU.js → chunk-RWLNTZK5.js} +5 -5
  102. package/dist/{chunk-LTPKSJWY.js → chunk-S3A4PCRR.js} +10 -10
  103. package/dist/{chunk-YCU7Y77H.js → chunk-S7HGPKCL.js} +1 -1
  104. package/dist/{chunk-MH5BRZOQ.js → chunk-SQL5YXUH.js} +1 -1
  105. package/dist/{chunk-MLOYBLO4.js → chunk-TJXJGMSP.js} +4 -4
  106. package/dist/{chunk-MQF6MQMR.js → chunk-TRV3ETGY.js} +5 -5
  107. package/dist/{chunk-42DRRA6N.js → chunk-USFZJAB4.js} +1 -1
  108. package/dist/{chunk-QFZNPZRO.js → chunk-VTJ4WZOC.js} +3 -3
  109. package/dist/{chunk-ZF4CPOO7.js → chunk-WH4ODOCE.js} +6 -6
  110. package/dist/{chunk-3WZMIDGX.js → chunk-WMBWKPKJ.js} +5 -5
  111. package/dist/{chunk-HIIXYZYV.js → chunk-WOSO4YFQ.js} +3 -3
  112. package/dist/{chunk-V53QYJNY.js → chunk-WPBWJMBZ.js} +5 -5
  113. package/dist/{chunk-USNGPJXF.js → chunk-WUT3PO33.js} +8 -8
  114. package/dist/{chunk-R27HXRSK.js → chunk-Y7INHH5G.js} +3 -3
  115. package/dist/{chunk-ZDOTNMGL.js → chunk-YNCVSKUW.js} +10 -8
  116. package/dist/{chunk-DZLLKJJT.js → chunk-YRJZF5RG.js} +3 -3
  117. package/dist/{chunk-CNURORKI.js → chunk-YU5XE6VC.js} +6 -6
  118. package/dist/{chunk-TKFNIDZK.js → chunk-YZA3YBHX.js} +2 -2
  119. package/dist/{chunk-53KLGXFL.js → chunk-ZBMVOMFG.js} +4 -3
  120. package/dist/{chunk-H33CFJOF.js → chunk-ZJZNT2G5.js} +4 -4
  121. package/dist/{chunk-HLWS6ADK.js → chunk-ZORBUQFG.js} +2 -2
  122. package/dist/{chunk-KP6FVUCC.js → chunk-ZSOCJHL7.js} +188 -13
  123. package/dist/{codex-app-cards-switch-EGUHSLTG.js → codex-app-cards-switch-F7WQ7Y3I.js} +11 -11
  124. package/dist/{codex-card-routing-I6YOJBTT.js → codex-card-routing-EVL5L36G.js} +2 -2
  125. package/dist/{codex-desktop-launch-6UN5CWCX.js → codex-desktop-launch-PL6Z2ELZ.js} +1 -1
  126. package/dist/{codex-session-launch-7R3HNIDJ.js → codex-session-launch-7NQEAUDU.js} +20 -20
  127. package/dist/{config-2CHOLFNB.js → config-KFFD4VWH.js} +3 -3
  128. package/dist/{global-upgrade-CCVIYELF.js → global-upgrade-L3CY6EFF.js} +9 -9
  129. package/dist/{identity-7QA3EDOM.js → identity-DPYYIMHL.js} +4 -4
  130. package/dist/{live-capabilities-SDMX6CPZ.js → live-capabilities-QJEXK6GH.js} +4 -4
  131. package/dist/{paths-ZC6XY73Q.js → paths-PEF6C64P.js} +3 -3
  132. package/dist/{reapply-W6AIK5PH.js → reapply-7APCQRRK.js} +29 -29
  133. package/dist/src/index.js +34 -34
  134. package/dist/{upgrade-lock-BRVUBSLD.js → upgrade-lock-A7OKXMRW.js} +4 -4
  135. package/dist/{usage-GWUTCS5A.js → usage-HSS33762.js} +3 -3
  136. package/package.json +1 -1
  137. package/dist/chunk-I6HXZIER.js +0 -31
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.145
4
+
5
+ - Hermes: Hermes skips its own dangerous-command approvals when its terminal backend is a container: `docker` with no host folder mounted, `modal`, `daytona`, `vercel_sandbox`, or a plugin backend that marks itself as a sandbox. Pushary gets those approvals through Hermes, so on such a backend no shell command reached your phone, and nothing said so. `pushary doctor` now names the backend, says that Pushary only gates the tools listed in `PUSHARY_GATE_TOOLS` there, and gives the fix.
6
+ - Setup run at a terminal without `--agents` offers to add `terminal` to `PUSHARY_GATE_TOOLS` on such a backend, so your phone is asked before each shell command, read-only ones included. The answer defaults to No. With `--agents`, or without a person at the terminal, it changes nothing and prints the command instead. `--hermes-gate-terminal` makes the same change without asking. Setup writes the setting with `hermes config set`, which saves it in `~/.hermes/.env`, keeps any tools already listed, and records what was there before so `pushary clean` puts it back. On a backend where Hermes checks commands itself, the flag leaves the setting alone.
7
+ - Doctor reads `TERMINAL_DOCKER_VOLUMES` and `TERMINAL_DOCKER_MOUNT_CWD_TO_WORKSPACE` from Hermes too, so a host folder mounted only in `~/.hermes/.env` no longer reads as a container that skips approvals. With Pushary as the approval transport, doctor warns when `command_allowlist` holds `plugin_rule:terminal`, which **Always allow** adds and which lets every shell command through, instead of saying Pushary gates them. Doctor and setup read these settings as a gateway running as a service sees them, so a `PUSHARY_GATE_TOOLS` exported only in your shell no longer reads as gated.
8
+ - The Hermes plugin Pushary installs is now 1.0.2. When Hermes loads it on such a backend and `PUSHARY_GATE_TOOLS` does not name `terminal`, it logs one warning with the command that fixes it.
9
+
10
+ ## 1.9.144
11
+
12
+ - The Pushary instructions this CLI writes into AGENTS.md and GEMINI.md, and the Pushary skill it installs (0.13.3), say what to do when you ask an agent to call, phone or ring you if it gets stuck: ask with `ask_user`. Pushary may phone you only when the `ask_user` reply includes `phoneCall`; without it no call is planned, and the agent is told not to promise one. While the reply is pending and has no `handoffAction`, the agent keeps waiting with `wait_for_answer`; with one, it follows the handoff.
13
+ - The skill's description is cut to 1015 characters, inside the 1024 that Agent Skills and Codex read. It no longer names "keep working while I am in a meeting" or the Claude Max line.
14
+ - fx: the instructions setup writes into `~/.fx/AGENTS.md` say how to load a Pushary tool both in an fx with the `toolbox` tool, which replaces `mcp_select_tool` in fx after 0.0.16, and in an older fx. Setup and `pushary upgrade` say fx picks up the change automatically and to restart it if Pushary's tools do not appear, since fx 0.0.15 removed `/mcp reload`.
15
+
3
16
  ## 1.9.143
4
17
 
5
18
  - A hook waiting on your answer no longer cancels the question when one poll fails. A network blip, a dropped connection, a server error or a rate limit while the hook waits for `wait_for_answer` used to withdraw the question at once, so a phone call or a late tap had nothing left to answer. The hook now keeps polling with growing pauses (2, 4, 8, then 15 seconds) until its own deadline. A failure that will not pass, such as a refused request, a tool error or a reply the hook cannot read, still withdraws the question right away. The `pushary claude` wrapper waits the same way, and a session cancelled during a pause stops at once.
package/data/SKILL.md CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: pushary
3
- version: 0.13.2
4
- description: Push notifications and human-in-the-loop for AI agents. Use this whenever a running agent needs a person who may not be at the terminal, such as before an irreversible or destructive action, before spending money, deploying, force-pushing or deleting, when blocked on a decision outside your authority, when running unattended and you hit a genuine ambiguity, when another skill's workflow says to confirm with the user, and when a long task finishes or fails with nobody watching. Also use it when the user says things like keep going and ping me on my phone if you need anything, notify me when my agent needs me, approve from my phone, ask me questions while I am away from the terminal, run this overnight, keep working while I am in a meeting, I am stepping away, or do not wait for me, or wants a long task to run unattended. Ask yes/no, multiple choice or free-text questions on their phone and get the answer back, and send an update when a task finishes or fails. Use these tools proactively, without waiting to be asked. Every question and answer is recorded, so an unattended run stays reviewable afterwards. Works with Claude Code, Codex, Cursor, VS Code, Gemini CLI, Windsurf, Hermes, Lovable, or any MCP client; no Claude Max subscription required. Pushary is a hosted, paid service; web and native store checkout have different price and trial terms.
3
+ version: 0.13.3
4
+ description: Push notifications and human-in-the-loop for AI agents. Use it whenever a running agent needs a person who may not be at the terminal, such as before an irreversible or destructive action, spending money, deploying, force-pushing or deleting, when blocked on a decision outside your authority, on a genuine ambiguity while unattended, when another skill says to confirm with the user, and when a long task finishes or fails with nobody watching. Also use it when the user says keep going and ping me on my phone if you need anything, call me if you get stuck, notify me when my agent needs me, approve from my phone, ask me while I am away, run this overnight, I am stepping away, or do not wait for me. Ask yes/no, choice or free-text questions on their phone and send updates. Use these tools proactively. Works with Claude Code, Codex, Cursor, VS Code, Gemini CLI, Windsurf, Hermes, Lovable or any MCP client. Pushary is a hosted, paid service; web and native store checkout have different price and trial terms.
5
5
  metadata:
6
6
  hermes:
7
7
  tags: [notifications, push, human-in-the-loop, alerts, permissions, mcp]
@@ -215,6 +215,8 @@ Asks a question and waits. Use `confirm` for yes or no, `select` for 2 to 6 know
215
215
 
216
216
  **Answers.** `value` is "yes" or "no" for confirm, the chosen option for select, and the typed text for input. Read `note` too: a denial with a note carries the reason or a condition. A select or input value containing "yes" is answer data, not approval of a separate action.
217
217
 
218
+ **Phone calls.** When the user says "call me", "phone me" or "ring me if you get stuck", ask with `ask_user`; there is no separate call tool. Pushary may phone only when the reply includes `phoneCall`; without it no call is planned, so do not promise one. With it, Pushary phones the person who can answer if the question is still unanswered, and records what they say as the answer: an approval, a choice or free text. For a call to the user, `ringsAt` says when it rings, and `waiting_for_calling_hours` means it rings when their calling hours start. While the reply is pending and has no `handoffAction`, keep waiting with `wait_for_answer` and the same `correlationId`: the spoken answer arrives there like any other. Do not cancel the question, ask it again or give up because a call is coming.
219
+
218
220
  ```json
219
221
  { "question": "Delete the 3 unused migration files in db/migrate/?", "type": "confirm", "context": "Cleaning up old migrations before the schema change", "toolName": "Bash", "toolTarget": "rm", "actionBody": "rm db/migrate/0003_*.sql", "agentName": "Claude Code - myproject" }
220
222
  { "question": "Which auth strategy for the new API?", "type": "select", "options": ["JWT tokens", "Session cookies", "OAuth2 + PKCE"], "context": "Setting up auth for the new endpoints", "agentName": "Claude Code - api-server" }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: pushary
3
- description: Push notifications and human-in-the-loop for AI agents. Use this whenever a running agent needs a person who may not be at the terminal, such as before an irreversible or destructive action, before spending money, deploying, force-pushing or deleting, when blocked on a decision outside your authority, when running unattended and you hit a genuine ambiguity, when another skill's workflow says to confirm with the user, and when a long task finishes or fails with nobody watching. Also use it when the user says things like keep going and ping me on my phone if you need anything, notify me when my agent needs me, approve from my phone, ask me questions while I am away from the terminal, run this overnight, keep working while I am in a meeting, I am stepping away, or do not wait for me, or wants a long task to run unattended. Ask yes/no, multiple choice or free-text questions on their phone and get the answer back, and send an update when a task finishes or fails. Use these tools proactively, without waiting to be asked. Every question and answer is recorded, so an unattended run stays reviewable afterwards. Works with Claude Code, Codex, Cursor, VS Code, Gemini CLI, Windsurf, Hermes, Lovable, or any MCP client; no Claude Max subscription required. Pushary is a hosted, paid service; web and native store checkout have different price and trial terms.
3
+ description: Push notifications and human-in-the-loop for AI agents. Use it whenever a running agent needs a person who may not be at the terminal, such as before an irreversible or destructive action, spending money, deploying, force-pushing or deleting, when blocked on a decision outside your authority, on a genuine ambiguity while unattended, when another skill says to confirm with the user, and when a long task finishes or fails with nobody watching. Also use it when the user says keep going and ping me on my phone if you need anything, call me if you get stuck, notify me when my agent needs me, approve from my phone, ask me while I am away, run this overnight, I am stepping away, or do not wait for me. Ask yes/no, choice or free-text questions on their phone and send updates. Use these tools proactively. Works with Claude Code, Codex, Cursor, VS Code, Gemini CLI, Windsurf, Hermes, Lovable or any MCP client. Pushary is a hosted, paid service; web and native store checkout have different price and trial terms.
4
4
  ---
5
5
 
6
6
  # Pushary - Push Notifications for AI Agents
@@ -208,6 +208,8 @@ Asks a question and waits. Use `confirm` for yes or no, `select` for 2 to 6 know
208
208
 
209
209
  **Answers.** `value` is "yes" or "no" for confirm, the chosen option for select, and the typed text for input. Read `note` too: a denial with a note carries the reason or a condition. A select or input value containing "yes" is answer data, not approval of a separate action.
210
210
 
211
+ **Phone calls.** When the user says "call me", "phone me" or "ring me if you get stuck", ask with `ask_user`; there is no separate call tool. Pushary may phone only when the reply includes `phoneCall`; without it no call is planned, so do not promise one. With it, Pushary phones the person who can answer if the question is still unanswered, and records what they say as the answer: an approval, a choice or free text. For a call to the user, `ringsAt` says when it rings, and `waiting_for_calling_hours` means it rings when their calling hours start. While the reply is pending and has no `handoffAction`, keep waiting with `wait_for_answer` and the same `correlationId`: the spoken answer arrives there like any other. Do not cancel the question, ask it again or give up because a call is coming.
212
+
211
213
  ```json
212
214
  { "question": "Delete the 3 unused migration files in db/migrate/?", "type": "confirm", "context": "Cleaning up old migrations before the schema change", "toolName": "Bash", "toolTarget": "rm", "actionBody": "rm db/migrate/0003_*.sql", "agentName": "Claude Code - myproject" }
213
215
  { "question": "Which auth strategy for the new API?", "type": "select", "options": ["JWT tokens", "Session cookies", "OAuth2 + PKCE"], "context": "Setting up auth for the new endpoints", "agentName": "Claude Code - api-server" }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: pushary
3
- description: Push notifications and human-in-the-loop for AI agents. Use this whenever a running agent needs a person who may not be at the terminal, such as before an irreversible or destructive action, before spending money, deploying, force-pushing or deleting, when blocked on a decision outside your authority, when running unattended and you hit a genuine ambiguity, when another skill's workflow says to confirm with the user, and when a long task finishes or fails with nobody watching. Also use it when the user says things like keep going and ping me on my phone if you need anything, notify me when my agent needs me, approve from my phone, ask me questions while I am away from the terminal, run this overnight, keep working while I am in a meeting, I am stepping away, or do not wait for me, or wants a long task to run unattended. Ask yes/no, multiple choice or free-text questions on their phone and get the answer back, and send an update when a task finishes or fails. Use these tools proactively, without waiting to be asked. Every question and answer is recorded, so an unattended run stays reviewable afterwards. Works with Claude Code, Codex, Cursor, VS Code, Gemini CLI, Windsurf, Hermes, Lovable, or any MCP client; no Claude Max subscription required. Pushary is a hosted, paid service; web and native store checkout have different price and trial terms.
3
+ description: Push notifications and human-in-the-loop for AI agents. Use it whenever a running agent needs a person who may not be at the terminal, such as before an irreversible or destructive action, spending money, deploying, force-pushing or deleting, when blocked on a decision outside your authority, on a genuine ambiguity while unattended, when another skill says to confirm with the user, and when a long task finishes or fails with nobody watching. Also use it when the user says keep going and ping me on my phone if you need anything, call me if you get stuck, notify me when my agent needs me, approve from my phone, ask me while I am away, run this overnight, I am stepping away, or do not wait for me. Ask yes/no, choice or free-text questions on their phone and send updates. Use these tools proactively. Works with Claude Code, Codex, Cursor, VS Code, Gemini CLI, Windsurf, Hermes, Lovable or any MCP client. Pushary is a hosted, paid service; web and native store checkout have different price and trial terms.
4
4
  ---
5
5
 
6
6
  # Pushary - Push Notifications for AI Agents
@@ -208,6 +208,8 @@ Asks a question and waits. Use `confirm` for yes or no, `select` for 2 to 6 know
208
208
 
209
209
  **Answers.** `value` is "yes" or "no" for confirm, the chosen option for select, and the typed text for input. Read `note` too: a denial with a note carries the reason or a condition. A select or input value containing "yes" is answer data, not approval of a separate action.
210
210
 
211
+ **Phone calls.** When the user says "call me", "phone me" or "ring me if you get stuck", ask with `ask_user`; there is no separate call tool. Pushary may phone only when the reply includes `phoneCall`; without it no call is planned, so do not promise one. With it, Pushary phones the person who can answer if the question is still unanswered, and records what they say as the answer: an approval, a choice or free text. For a call to the user, `ringsAt` says when it rings, and `waiting_for_calling_hours` means it rings when their calling hours start. While the reply is pending and has no `handoffAction`, keep waiting with `wait_for_answer` and the same `correlationId`: the spoken answer arrives there like any other. Do not cancel the question, ask it again or give up because a call is coming.
212
+
211
213
  ```json
212
214
  { "question": "Delete the 3 unused migration files in db/migrate/?", "type": "confirm", "context": "Cleaning up old migrations before the schema change", "toolName": "Bash", "toolTarget": "rm", "actionBody": "rm db/migrate/0003_*.sql", "agentName": "Claude Code - myproject" }
213
215
  { "question": "Which auth strategy for the new API?", "type": "select", "options": ["JWT tokens", "Session cookies", "OAuth2 + PKCE"], "context": "Setting up auth for the new endpoints", "agentName": "Claude Code - api-server" }
@@ -19,25 +19,25 @@ import {
19
19
  waitRetryPauseMs,
20
20
  waitsForThePhone,
21
21
  withdrawQuestion
22
- } from "./chunk-CNURORKI.js";
22
+ } from "./chunk-YU5XE6VC.js";
23
23
  import "./chunk-POFBE6ZY.js";
24
- import "./chunk-V53QYJNY.js";
25
- import "./chunk-DZLLKJJT.js";
26
- import "./chunk-4OX4SJGA.js";
27
- import "./chunk-YCU7Y77H.js";
28
- import "./chunk-4Z7YVVKQ.js";
24
+ import "./chunk-WPBWJMBZ.js";
25
+ import "./chunk-YRJZF5RG.js";
26
+ import "./chunk-LJRPWUST.js";
27
+ import "./chunk-S7HGPKCL.js";
28
+ import "./chunk-KS3PNTRT.js";
29
29
  import "./chunk-YU2EUD7O.js";
30
- import "./chunk-IG7NGXBS.js";
31
- import "./chunk-QFZNPZRO.js";
32
- import "./chunk-4EBJ4PTZ.js";
30
+ import "./chunk-72LP4RPC.js";
31
+ import "./chunk-VTJ4WZOC.js";
32
+ import "./chunk-BWREST4F.js";
33
33
  import "./chunk-BG4HHB7E.js";
34
34
  import "./chunk-TODDEIYG.js";
35
- import "./chunk-R7FSMUHG.js";
35
+ import "./chunk-6LZ7MXHD.js";
36
36
  import "./chunk-WIIMW5YO.js";
37
37
  import {
38
38
  DECISION_STOP_REASON,
39
39
  UNVERIFIABLE_APPROVAL_REASON
40
- } from "./chunk-C5LIS3XM.js";
40
+ } from "./chunk-LQXUWXQP.js";
41
41
  import "./chunk-MLKGABMK.js";
42
42
  export {
43
43
  ABANDONED_WAIT,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  exitOnHelpFlag
4
- } from "../chunk-QESEICW4.js";
4
+ } from "../chunk-A2H256WR.js";
5
5
  import {
6
6
  EXIT
7
7
  } from "../chunk-BG4HHB7E.js";
@@ -9,7 +9,7 @@ import {
9
9
  readJsonSafe,
10
10
  writeJsonAtomic
11
11
  } from "../chunk-TODDEIYG.js";
12
- import "../chunk-R7FSMUHG.js";
12
+ import "../chunk-6LZ7MXHD.js";
13
13
  import "../chunk-WIIMW5YO.js";
14
14
  import {
15
15
  AUDIT_CHAIN_FINDING_SEVERITY,
@@ -22,7 +22,7 @@ import {
22
22
  parseAuditChainExport,
23
23
  parseAuditKnownHead,
24
24
  verifyAuditChainSite
25
- } from "../chunk-C5LIS3XM.js";
25
+ } from "../chunk-LQXUWXQP.js";
26
26
  import "../chunk-MLKGABMK.js";
27
27
 
28
28
  // src/audit-verify.ts
@@ -1,46 +1,46 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handleBell
4
- } from "../chunk-P5QXH5QI.js";
4
+ } from "../chunk-IIN26HL7.js";
5
5
  import {
6
6
  readHookInput
7
- } from "../chunk-NZHRH4RR.js";
8
- import "../chunk-6JLANX5L.js";
9
- import "../chunk-LTPKSJWY.js";
7
+ } from "../chunk-5TWW7ZUL.js";
8
+ import "../chunk-L4OGTRVW.js";
9
+ import "../chunk-S3A4PCRR.js";
10
10
  import "../chunk-VAE5JBR5.js";
11
11
  import "../chunk-G66WIAST.js";
12
- import "../chunk-5RSM5DRT.js";
13
- import "../chunk-ZF4CPOO7.js";
14
- import "../chunk-3VOUWGFF.js";
15
- import "../chunk-QGJK3NAR.js";
16
- import "../chunk-7QWH257P.js";
17
- import "../chunk-53KLGXFL.js";
18
- import "../chunk-MH5BRZOQ.js";
12
+ import "../chunk-R34RWVN2.js";
13
+ import "../chunk-WH4ODOCE.js";
14
+ import "../chunk-CUR2DCZN.js";
15
+ import "../chunk-K2SKUBYY.js";
16
+ import "../chunk-JZT2LPRM.js";
17
+ import "../chunk-ZBMVOMFG.js";
18
+ import "../chunk-SQL5YXUH.js";
19
19
  import "../chunk-YPY4YCIZ.js";
20
- import "../chunk-22CXL7YI.js";
20
+ import "../chunk-IRPIMQ7U.js";
21
21
  import "../chunk-XMSDA5WA.js";
22
- import "../chunk-7VMVMC4H.js";
23
- import "../chunk-EMODTMHE.js";
24
- import "../chunk-CNURORKI.js";
22
+ import "../chunk-HOQH5CLZ.js";
23
+ import "../chunk-6UK4K5RS.js";
24
+ import "../chunk-YU5XE6VC.js";
25
25
  import "../chunk-POFBE6ZY.js";
26
- import "../chunk-V53QYJNY.js";
27
- import "../chunk-DZLLKJJT.js";
28
- import "../chunk-4OX4SJGA.js";
26
+ import "../chunk-WPBWJMBZ.js";
27
+ import "../chunk-YRJZF5RG.js";
28
+ import "../chunk-LJRPWUST.js";
29
29
  import "../chunk-H6CL3T2S.js";
30
- import "../chunk-ZVJIJPQY.js";
31
- import "../chunk-YCU7Y77H.js";
32
- import "../chunk-4Z7YVVKQ.js";
30
+ import "../chunk-BYKRAYGD.js";
31
+ import "../chunk-S7HGPKCL.js";
32
+ import "../chunk-KS3PNTRT.js";
33
33
  import "../chunk-YU2EUD7O.js";
34
- import "../chunk-HIIXYZYV.js";
35
- import "../chunk-BHKODM4L.js";
36
- import "../chunk-IG7NGXBS.js";
37
- import "../chunk-QFZNPZRO.js";
38
- import "../chunk-4EBJ4PTZ.js";
34
+ import "../chunk-WOSO4YFQ.js";
35
+ import "../chunk-MOC2DN42.js";
36
+ import "../chunk-72LP4RPC.js";
37
+ import "../chunk-VTJ4WZOC.js";
38
+ import "../chunk-BWREST4F.js";
39
39
  import "../chunk-BG4HHB7E.js";
40
40
  import "../chunk-TODDEIYG.js";
41
- import "../chunk-R7FSMUHG.js";
41
+ import "../chunk-6LZ7MXHD.js";
42
42
  import "../chunk-WIIMW5YO.js";
43
- import "../chunk-C5LIS3XM.js";
43
+ import "../chunk-LQXUWXQP.js";
44
44
  import "../chunk-MLKGABMK.js";
45
45
 
46
46
  // bin/pushary-bell-hook.ts
@@ -5,29 +5,29 @@ import {
5
5
  liveAgentCount,
6
6
  ring,
7
7
  upgradeThreshold
8
- } from "../chunk-P5QXH5QI.js";
8
+ } from "../chunk-IIN26HL7.js";
9
9
  import {
10
10
  createIo
11
11
  } from "../chunk-FO3MDD26.js";
12
12
  import {
13
13
  exitOnHelpFlag
14
- } from "../chunk-QESEICW4.js";
14
+ } from "../chunk-A2H256WR.js";
15
15
  import {
16
16
  addBellHooks,
17
17
  bellInstalled,
18
18
  removeBellHooks
19
- } from "../chunk-MH5BRZOQ.js";
19
+ } from "../chunk-SQL5YXUH.js";
20
20
  import {
21
21
  parseFlags
22
22
  } from "../chunk-YPY4YCIZ.js";
23
23
  import "../chunk-YU2EUD7O.js";
24
- import "../chunk-HIIXYZYV.js";
25
- import "../chunk-BHKODM4L.js";
24
+ import "../chunk-WOSO4YFQ.js";
25
+ import "../chunk-MOC2DN42.js";
26
26
  import {
27
27
  claudeSettings
28
- } from "../chunk-IG7NGXBS.js";
29
- import "../chunk-QFZNPZRO.js";
30
- import "../chunk-4EBJ4PTZ.js";
28
+ } from "../chunk-72LP4RPC.js";
29
+ import "../chunk-VTJ4WZOC.js";
30
+ import "../chunk-BWREST4F.js";
31
31
  import {
32
32
  EXIT
33
33
  } from "../chunk-BG4HHB7E.js";
@@ -35,11 +35,11 @@ import {
35
35
  readJsonSafe,
36
36
  writeJsonAtomic
37
37
  } from "../chunk-TODDEIYG.js";
38
- import "../chunk-R7FSMUHG.js";
38
+ import "../chunk-6LZ7MXHD.js";
39
39
  import "../chunk-WIIMW5YO.js";
40
40
  import {
41
41
  isRecord
42
- } from "../chunk-C5LIS3XM.js";
42
+ } from "../chunk-LQXUWXQP.js";
43
43
  import "../chunk-MLKGABMK.js";
44
44
 
45
45
  // bin/pushary-bell.ts
@@ -6,31 +6,31 @@ import {
6
6
  import {
7
7
  CommandReceipts,
8
8
  controllerCommandSchema
9
- } from "../chunk-DDJHPMBJ.js";
9
+ } from "../chunk-LMU6NG2G.js";
10
10
  import {
11
11
  SESSION_IDLE_TIMEOUT_MS,
12
12
  describeIdleWindow,
13
13
  startProcessOwnership,
14
14
  withSpawnProcessOwnership
15
- } from "../chunk-NQF652IG.js";
15
+ } from "../chunk-PXZTCR4M.js";
16
16
  import "../chunk-CYTPQDQY.js";
17
17
  import {
18
18
  announceSubscriptionRequired,
19
19
  isDeferAnswer
20
- } from "../chunk-42DRRA6N.js";
20
+ } from "../chunk-USFZJAB4.js";
21
21
  import {
22
22
  claudeTranscriptPath,
23
23
  redactDraft,
24
24
  registerTranscript,
25
25
  registeredTranscriptEnabled,
26
26
  startDraftPublisher
27
- } from "../chunk-LTPKSJWY.js";
27
+ } from "../chunk-S3A4PCRR.js";
28
28
  import "../chunk-VAE5JBR5.js";
29
29
  import "../chunk-G66WIAST.js";
30
30
  import {
31
31
  ensureDaemonRunning
32
- } from "../chunk-ZF4CPOO7.js";
33
- import "../chunk-3VOUWGFF.js";
32
+ } from "../chunk-WH4ODOCE.js";
33
+ import "../chunk-CUR2DCZN.js";
34
34
  import {
35
35
  DEFAULT_SESSION,
36
36
  PHONE_DRIVER,
@@ -45,28 +45,28 @@ import {
45
45
  removePendingCommand,
46
46
  reportEvent,
47
47
  savePendingCommand
48
- } from "../chunk-QGJK3NAR.js";
48
+ } from "../chunk-K2SKUBYY.js";
49
49
  import {
50
50
  UNNAMED_ACTION,
51
51
  deriveToolTarget,
52
52
  describeStopFailure,
53
53
  describeToolCall,
54
54
  scopePathFor
55
- } from "../chunk-7QWH257P.js";
56
- import "../chunk-53KLGXFL.js";
57
- import "../chunk-MH5BRZOQ.js";
55
+ } from "../chunk-JZT2LPRM.js";
56
+ import "../chunk-ZBMVOMFG.js";
57
+ import "../chunk-SQL5YXUH.js";
58
58
  import "../chunk-YPY4YCIZ.js";
59
- import "../chunk-22CXL7YI.js";
59
+ import "../chunk-IRPIMQ7U.js";
60
60
  import {
61
61
  external_exports
62
62
  } from "../chunk-XMSDA5WA.js";
63
63
  import {
64
64
  transcriptsEnabled
65
- } from "../chunk-7VMVMC4H.js";
65
+ } from "../chunk-HOQH5CLZ.js";
66
66
  import {
67
67
  repoKeyFor,
68
68
  repositoryScopeFor
69
- } from "../chunk-EMODTMHE.js";
69
+ } from "../chunk-6UK4K5RS.js";
70
70
  import {
71
71
  askUser,
72
72
  cancelQuestion,
@@ -80,13 +80,13 @@ import {
80
80
  waitRetryPauseMs,
81
81
  waitsForThePhone,
82
82
  withdrawQuestion
83
- } from "../chunk-CNURORKI.js";
83
+ } from "../chunk-YU5XE6VC.js";
84
84
  import "../chunk-POFBE6ZY.js";
85
85
  import {
86
86
  SubscriptionRequiredError
87
- } from "../chunk-V53QYJNY.js";
88
- import "../chunk-DZLLKJJT.js";
89
- import "../chunk-4OX4SJGA.js";
87
+ } from "../chunk-WPBWJMBZ.js";
88
+ import "../chunk-YRJZF5RG.js";
89
+ import "../chunk-LJRPWUST.js";
90
90
  import {
91
91
  needsShell,
92
92
  spawnClaude
@@ -96,27 +96,27 @@ import {
96
96
  commandAckIsFinal,
97
97
  readCommandAck,
98
98
  refusedReceiptMessage
99
- } from "../chunk-ZVJIJPQY.js";
100
- import "../chunk-YCU7Y77H.js";
99
+ } from "../chunk-BYKRAYGD.js";
100
+ import "../chunk-S7HGPKCL.js";
101
101
  import {
102
102
  getMachineId
103
- } from "../chunk-4Z7YVVKQ.js";
103
+ } from "../chunk-KS3PNTRT.js";
104
104
  import "../chunk-YU2EUD7O.js";
105
- import "../chunk-HIIXYZYV.js";
106
- import "../chunk-BHKODM4L.js";
105
+ import "../chunk-WOSO4YFQ.js";
106
+ import "../chunk-MOC2DN42.js";
107
107
  import {
108
108
  claudeConfigDir
109
- } from "../chunk-IG7NGXBS.js";
110
- import "../chunk-QFZNPZRO.js";
109
+ } from "../chunk-72LP4RPC.js";
110
+ import "../chunk-VTJ4WZOC.js";
111
111
  import {
112
112
  getApiKey,
113
113
  getBaseUrl
114
- } from "../chunk-4EBJ4PTZ.js";
114
+ } from "../chunk-BWREST4F.js";
115
115
  import "../chunk-BG4HHB7E.js";
116
116
  import "../chunk-TODDEIYG.js";
117
117
  import {
118
118
  NPX_LATEST_COMMAND
119
- } from "../chunk-R7FSMUHG.js";
119
+ } from "../chunk-6LZ7MXHD.js";
120
120
  import "../chunk-WIIMW5YO.js";
121
121
  import {
122
122
  DECISION_STOP_REASON,
@@ -129,7 +129,7 @@ import {
129
129
  refusesWhenUnanswered,
130
130
  resolveGate,
131
131
  timeoutActionWithoutLocalPrompt
132
- } from "../chunk-C5LIS3XM.js";
132
+ } from "../chunk-LQXUWXQP.js";
133
133
  import "../chunk-MLKGABMK.js";
134
134
 
135
135
  // src/wrapper/localPassthrough.ts
@@ -15,30 +15,30 @@ import {
15
15
  storedMacAppState,
16
16
  storedPusharyKeychainServices,
17
17
  waitForMacAppExit
18
- } from "../chunk-FYB6HBHQ.js";
18
+ } from "../chunk-RO6EVL5C.js";
19
19
  import {
20
20
  PUSHARY_SKILL_NAME,
21
21
  PUSHARY_SKILL_SOURCE,
22
22
  createGuards
23
23
  } from "../chunk-XR27HPYC.js";
24
- import "../chunk-44Z6MQZ2.js";
24
+ import "../chunk-KGFB2LEB.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-3WZMIDGX.js";
31
+ } from "../chunk-WMBWKPKJ.js";
32
32
  import {
33
33
  isCursorPluginLeftover,
34
34
  releaseSoleGate,
35
35
  withoutPusharyCursorHooks
36
- } from "../chunk-DOXH5BV4.js";
36
+ } from "../chunk-6IWOMXUF.js";
37
37
  import {
38
38
  shortenHome,
39
39
  unregisterPluginLocation,
40
40
  vscodeSettingsTargets
41
- } from "../chunk-G7G2ZPT4.js";
41
+ } from "../chunk-Q6P7G4NY.js";
42
42
  import {
43
43
  configFileHoldsMacAppKey,
44
44
  macAppKeepsMcpEntry,
@@ -46,22 +46,22 @@ import {
46
46
  pusharyKey,
47
47
  readMacAppAgentKey,
48
48
  setupReceiptKey
49
- } from "../chunk-K7MVCPH5.js";
50
- import "../chunk-TKFNIDZK.js";
49
+ } from "../chunk-KFALRZIN.js";
50
+ import "../chunk-YZA3YBHX.js";
51
51
  import {
52
52
  HERMES_CONFIG_FILE,
53
53
  defaultHermesHome,
54
54
  hermesReceiptPaths,
55
55
  removeHermesWiring
56
- } from "../chunk-KP6FVUCC.js";
56
+ } from "../chunk-ZSOCJHL7.js";
57
57
  import "../chunk-QCGNGEGE.js";
58
58
  import {
59
59
  planClineRemoval,
60
60
  planFxRemoval,
61
61
  removeClineServer
62
- } from "../chunk-ZDOTNMGL.js";
63
- import "../chunk-XWYCFODT.js";
64
- import "../chunk-EGUT2MWV.js";
62
+ } from "../chunk-YNCVSKUW.js";
63
+ import "../chunk-2ELNRGNX.js";
64
+ import "../chunk-52UXNCZG.js";
65
65
  import {
66
66
  OPENCODE_ASKED_PERMISSIONS,
67
67
  OPENCODE_PLUGIN_SIBLING,
@@ -75,14 +75,14 @@ import {
75
75
  openCodePluginDir,
76
76
  openCodePluginFile,
77
77
  removeOpenCodeMcpServer
78
- } from "../chunk-SYZF5SDG.js";
78
+ } from "../chunk-GK5X2ZTN.js";
79
79
  import {
80
80
  ansiPainter,
81
81
  useColor
82
82
  } from "../chunk-FO3MDD26.js";
83
83
  import {
84
84
  exitOnHelpFlag
85
- } from "../chunk-QESEICW4.js";
85
+ } from "../chunk-A2H256WR.js";
86
86
  import "../chunk-CYTPQDQY.js";
87
87
  import {
88
88
  compatibleConfigFile,
@@ -95,42 +95,42 @@ import {
95
95
  removeCompatibleHooks,
96
96
  removeCompatibleMcpServer,
97
97
  serializeConfigDocument
98
- } from "../chunk-5RSM5DRT.js";
98
+ } from "../chunk-R34RWVN2.js";
99
99
  import {
100
100
  disableDaemonService
101
- } from "../chunk-ZF4CPOO7.js";
101
+ } from "../chunk-WH4ODOCE.js";
102
102
  import {
103
103
  hookOwnerOf,
104
104
  isHookTakeoverReceipt,
105
105
  removeGeminiSettings,
106
106
  restoreHookTakeover,
107
107
  restoreMcpServer
108
- } from "../chunk-3VOUWGFF.js";
109
- import "../chunk-QGJK3NAR.js";
110
- import "../chunk-7QWH257P.js";
111
- import "../chunk-53KLGXFL.js";
112
- import "../chunk-MH5BRZOQ.js";
108
+ } from "../chunk-CUR2DCZN.js";
109
+ import "../chunk-K2SKUBYY.js";
110
+ import "../chunk-JZT2LPRM.js";
111
+ import "../chunk-ZBMVOMFG.js";
112
+ import "../chunk-SQL5YXUH.js";
113
113
  import {
114
114
  parseFlags
115
115
  } from "../chunk-YPY4YCIZ.js";
116
- import "../chunk-EMODTMHE.js";
117
- import "../chunk-CNURORKI.js";
116
+ import "../chunk-6UK4K5RS.js";
117
+ import "../chunk-YU5XE6VC.js";
118
118
  import "../chunk-POFBE6ZY.js";
119
- import "../chunk-V53QYJNY.js";
120
- import "../chunk-DZLLKJJT.js";
121
- import "../chunk-4OX4SJGA.js";
119
+ import "../chunk-WPBWJMBZ.js";
120
+ import "../chunk-YRJZF5RG.js";
121
+ import "../chunk-LJRPWUST.js";
122
122
  import "../chunk-H6CL3T2S.js";
123
- import "../chunk-ZVJIJPQY.js";
124
- import "../chunk-YCU7Y77H.js";
125
- import "../chunk-4Z7YVVKQ.js";
123
+ import "../chunk-BYKRAYGD.js";
124
+ import "../chunk-S7HGPKCL.js";
125
+ import "../chunk-KS3PNTRT.js";
126
126
  import "../chunk-YU2EUD7O.js";
127
127
  import {
128
128
  CANDIDATE_RCS,
129
129
  isDisabledExport,
130
130
  removeClaudeAlias,
131
131
  shellProfileCandidates
132
- } from "../chunk-HIIXYZYV.js";
133
- import "../chunk-BHKODM4L.js";
132
+ } from "../chunk-WOSO4YFQ.js";
133
+ import "../chunk-MOC2DN42.js";
134
134
  import {
135
135
  claudeConfigDir,
136
136
  claudeJson,
@@ -175,24 +175,24 @@ import {
175
175
  restoreCodexHookTrust,
176
176
  vscodePluginDir,
177
177
  vscodePluginMcp
178
- } from "../chunk-IG7NGXBS.js";
178
+ } from "../chunk-72LP4RPC.js";
179
179
  import {
180
180
  cleanNpmEnv,
181
181
  globalPackageState,
182
182
  npmIsOnPath,
183
183
  readGlobalFolder,
184
184
  readGlobalPrefix
185
- } from "../chunk-QFZNPZRO.js";
185
+ } from "../chunk-VTJ4WZOC.js";
186
186
  import {
187
187
  getBaseUrl
188
- } from "../chunk-4EBJ4PTZ.js";
188
+ } from "../chunk-BWREST4F.js";
189
189
  import {
190
190
  EXIT
191
191
  } from "../chunk-BG4HHB7E.js";
192
192
  import "../chunk-TODDEIYG.js";
193
193
  import {
194
194
  NPX_LATEST_COMMAND
195
- } from "../chunk-R7FSMUHG.js";
195
+ } from "../chunk-6LZ7MXHD.js";
196
196
  import {
197
197
  CLI_PACKAGE_NAMES,
198
198
  globalPackageFolder,
@@ -206,7 +206,7 @@ import {
206
206
  SUPPORT_EMAIL,
207
207
  isValidApiKey,
208
208
  redactSecrets
209
- } from "../chunk-C5LIS3XM.js";
209
+ } from "../chunk-LQXUWXQP.js";
210
210
  import "../chunk-U4P4NDVB.js";
211
211
  import "../chunk-MLKGABMK.js";
212
212