@pushary/agent-hooks 1.3.1 → 1.4.0

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 (84) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +1 -1
  3. package/dist/bin/pushary-bell-hook.js +18 -18
  4. package/dist/bin/pushary-bell.js +8 -8
  5. package/dist/bin/pushary-claude.js +18 -18
  6. package/dist/bin/pushary-clean.js +470 -92
  7. package/dist/bin/pushary-codex-bridge.js +10 -10
  8. package/dist/bin/pushary-codex-hook.js +28 -26
  9. package/dist/bin/pushary-codex.js +6 -6
  10. package/dist/bin/pushary-connect.js +8 -8
  11. package/dist/bin/pushary-cowork.js +5 -5
  12. package/dist/bin/pushary-daemon.js +24 -24
  13. package/dist/bin/pushary-disconnect.js +12 -12
  14. package/dist/bin/pushary-doctor.js +75 -26
  15. package/dist/bin/pushary-elicitation-hook.js +17 -17
  16. package/dist/bin/pushary-gemini-bridge.js +9 -9
  17. package/dist/bin/pushary-gemini-hook.js +19 -19
  18. package/dist/bin/pushary-hook.js +27 -27
  19. package/dist/bin/pushary-login.js +9 -9
  20. package/dist/bin/pushary-logout.js +6 -6
  21. package/dist/bin/pushary-mode.js +5 -5
  22. package/dist/bin/pushary-notification-hook.js +20 -20
  23. package/dist/bin/pushary-opencode-hook.js +19 -19
  24. package/dist/bin/pushary-permission-denied-hook.js +24 -24
  25. package/dist/bin/pushary-permission-hook.js +25 -25
  26. package/dist/bin/pushary-post-hook.js +20 -20
  27. package/dist/bin/pushary-prompt-hook.js +20 -20
  28. package/dist/bin/pushary-session-end-hook.js +20 -20
  29. package/dist/bin/pushary-session-start-hook.js +22 -22
  30. package/dist/bin/pushary-setup.js +38 -59
  31. package/dist/bin/pushary-stats.js +4 -4
  32. package/dist/bin/pushary-status.js +12 -12
  33. package/dist/bin/pushary-stop-hook.js +20 -20
  34. package/dist/bin/pushary-stopfailure-hook.js +20 -20
  35. package/dist/bin/pushary-suggestions.js +2 -2
  36. package/dist/bin/pushary-transcript-register.js +16 -16
  37. package/dist/bin/pushary-transcripts.js +6 -6
  38. package/dist/bin/pushary-upgrade.js +16 -16
  39. package/dist/bin/pushary-wait.js +5 -5
  40. package/dist/bin/pushary.js +1 -1
  41. package/dist/{chunk-QDYJQLXT.js → chunk-2TOTCUJC.js} +2 -2
  42. package/dist/{chunk-I2OLM3DM.js → chunk-43Z3RLS5.js} +62 -12
  43. package/dist/{chunk-OMP3KDDU.js → chunk-5F5QQMCA.js} +1 -1
  44. package/dist/{chunk-SGZE2JBF.js → chunk-5IBVIMWT.js} +3 -3
  45. package/dist/{chunk-FGNABUPN.js → chunk-5MSBI6NP.js} +1 -1
  46. package/dist/{chunk-5UWDYOZX.js → chunk-7IEB2GV4.js} +80 -8
  47. package/dist/{chunk-EAGMQMRM.js → chunk-7PQZYCEP.js} +1 -1
  48. package/dist/{chunk-KHGIM2BN.js → chunk-A7XIL2WD.js} +3 -3
  49. package/dist/{chunk-YXWM4TNX.js → chunk-BYAXXBNO.js} +1 -1
  50. package/dist/{chunk-TW7KA27C.js → chunk-D4TNSUDY.js} +1 -1
  51. package/dist/{chunk-P232YODQ.js → chunk-ESLLVHDY.js} +6 -6
  52. package/dist/{chunk-LZQVAEWP.js → chunk-FAH3D74E.js} +2 -1
  53. package/dist/{chunk-XOUQUZ43.js → chunk-GIXLZFEY.js} +1 -1
  54. package/dist/{chunk-PHXU4NOP.js → chunk-GLPWCQ6V.js} +2 -2
  55. package/dist/{chunk-NDSOOJDX.js → chunk-GS5EI2YL.js} +1 -1
  56. package/dist/{chunk-R5CU7ED6.js → chunk-H25UB3CG.js} +1 -1
  57. package/dist/{chunk-LWT34GSY.js → chunk-HGN6VZTY.js} +7 -7
  58. package/dist/{chunk-WOBHHXW5.js → chunk-IF46POXX.js} +5 -4
  59. package/dist/{chunk-HCTSTMDD.js → chunk-JCWCTBYH.js} +3 -3
  60. package/dist/{chunk-XP2KRTZD.js → chunk-KZIXHLPQ.js} +1 -1
  61. package/dist/{chunk-AFOTOA24.js → chunk-NBCTKC4Z.js} +34 -3
  62. package/dist/{chunk-5SALHATY.js → chunk-NYHNLMQO.js} +11 -2
  63. package/dist/{chunk-PEV6ULSM.js → chunk-O5L2OJBB.js} +3 -3
  64. package/dist/{chunk-QOCWB4Q6.js → chunk-O6RN46OS.js} +3 -3
  65. package/dist/{chunk-5WLH2ENB.js → chunk-P4JVVJ2D.js} +1 -1
  66. package/dist/{chunk-XVE52YFZ.js → chunk-Q4UAMWXK.js} +1 -1
  67. package/dist/{chunk-6HH4IH4K.js → chunk-RGZY77CD.js} +3 -3
  68. package/dist/{chunk-465UENKO.js → chunk-RQM5SMMR.js} +1 -1
  69. package/dist/{chunk-RERJ2ZDV.js → chunk-S3CLZSV3.js} +5 -5
  70. package/dist/{chunk-CDSL3LLO.js → chunk-S3EUZZJB.js} +1 -1
  71. package/dist/{chunk-AFKOWCMQ.js → chunk-SGZ3IAWF.js} +1 -1
  72. package/dist/{chunk-GOQHN2UH.js → chunk-TWWLVOPB.js} +1 -1
  73. package/dist/{chunk-TGG4FWWB.js → chunk-U4FB623J.js} +2 -2
  74. package/dist/{chunk-34NNTYK6.js → chunk-UCGQEAKZ.js} +1 -1
  75. package/dist/{chunk-5XKMOZO6.js → chunk-UIN3RD2U.js} +4 -4
  76. package/dist/{chunk-REIZ5GXG.js → chunk-UTYTPDWN.js} +4 -4
  77. package/dist/{chunk-35RPUNYU.js → chunk-VENQSVKA.js} +1 -1
  78. package/dist/{chunk-JZA2JOGO.js → chunk-XJWMPQ6X.js} +1 -1
  79. package/dist/{chunk-KLZJEMSE.js → chunk-YYRZPEMA.js} +1 -1
  80. package/dist/{chunk-CKLWJ6EL.js → chunk-ZIGGEKZW.js} +33 -7
  81. package/dist/{reapply-ADFRVH5N.js → reapply-B3S2LRMT.js} +8 -8
  82. package/dist/src/index.d.ts +19 -16
  83. package/dist/src/index.js +12 -12
  84. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,11 +1,28 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.4.0
4
+
5
+ - `pushary clean --everything` removes what the Mac app set up as well as what the CLI did. It quits the app, then removes its keychain items, preferences and caches, the editor extension it installs in Cursor and VS Code, and the skill's registration in `~/.agents`. A plain `clean` still leaves an installed Mac app alone, and now says so instead of printing "Clean complete." over a key it kept.
6
+ - `clean` tells you to run `unset PUSHARY_API_KEY` when your terminal still exports the key. Without it, `setup` in the same terminal signed you straight back in as the account you had just removed.
7
+ - `clean` no longer leaves your key behind in its own backup of your shell profile, in earlier copies of the Cursor plugin, or in the line `pushary logout` comments out.
8
+ - A line in your shell profile that still sets a real key, in a form `clean` will not rewrite, is reported as left behind rather than skipped.
9
+ - `clean`, `doctor` and `setup` name business@pushary.com and the Discord when they leave something broken.
10
+ - A plain `clean` after you delete the Mac app removes what the app left behind. It used to take the app's leftover locator file as proof the app was still installed, and kept every hook pointing at it. In Cursor those hooks deny whatever reaches them once there is no app to answer.
11
+ - `clean` removes the Pushary entry and its key from Claude Code's own backups of `~/.claude.json`, not only from the live file. Restoring one of those backups used to put a working key straight back. A backup from before setup keeps whatever you had there.
12
+ - A file edit no rule was written for goes straight to the agent's own prompt instead of waiting for your phone first, in Claude Code's default mode and when Codex is about to ask. Over 35 days these were asked 224 times and answered from a phone twice. A rule you wrote, a preset or mode you picked, and a scope contract still reach your phone, and runs that bypass permissions are unchanged, because there is no prompt to fall back to.
13
+ - A kill switch or a standing deny enforced on this machine now appears in your decision history, as it already did through the Mac app. Only what the machine allowed was recorded before.
14
+ - Qwen Code, CodeBuddy and Qoder keep the answer you give on a permission prompt. Devin's patch and MCP calls reach the gate that was installed for them. A hook naming an agent Pushary does not recognise with `--source` stands aside, as it already did with `--agent`, rather than acting as Claude Code.
15
+ - `doctor` reads hook commands written in quotes or with `--source`, and tells a malformed MCP registration apart from a configured server.
16
+ - A hook payload that is not the shape it claims to be is refused before it can change anything.
17
+
3
18
  ## 1.3.1
4
19
 
5
20
  - Keep human-review policies effective inside shell chains, and refuse automatic approval of quoted command substitutions.
6
21
  - Check kill switches and standing denials before rejecting unreadable tool targets. Check every file in a patch; ask the agent to split a batch that crosses scope.
7
22
  - Preserve symlinked agent configuration files during atomic updates.
8
23
  - The installed skill recognizes file-edit capabilities across agents, including Codex patches.
24
+ - `pushary doctor` warns when hooks are registered for an agent this version has no profile for. Every one of them stands aside, so nothing on that agent is gated or recorded until you upgrade.
25
+ - A hook that stands aside because it cannot resolve `--agent` says so in the documented `[degraded]` shape, so a stand-aside is countable instead of invisible.
9
26
 
10
27
  ## 1.2.0
11
28
 
package/README.md CHANGED
@@ -194,7 +194,7 @@ connect Connect a phone without re-running setup (--app for the Pushary app
194
194
  bell Free local bell when an agent finishes or needs you. No account, no key, no network
195
195
  doctor Verify your Pushary installation is working
196
196
  disconnect Turn off one agent (claude|codex|gemini|cursor)
197
- clean Remove all Pushary configuration (--yes for non-interactive)
197
+ clean Remove Pushary from this machine (--everything: the Mac app's setup too, --dry-run: preview)
198
198
  mode Choose where approval requests appear
199
199
  wait Show or set the "wait for your phone" ladder (pushary wait 45)
200
200
  stats Show the approval moments your agents hit while not connected
@@ -1,35 +1,35 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handleBell
4
- } from "../chunk-35RPUNYU.js";
4
+ } from "../chunk-VENQSVKA.js";
5
5
  import {
6
6
  readHookInput
7
- } from "../chunk-CKLWJ6EL.js";
8
- import "../chunk-P232YODQ.js";
7
+ } from "../chunk-ZIGGEKZW.js";
8
+ import "../chunk-ESLLVHDY.js";
9
9
  import "../chunk-SGZJ5LYH.js";
10
- import "../chunk-REIZ5GXG.js";
11
- import "../chunk-FGNABUPN.js";
12
- import "../chunk-KLZJEMSE.js";
13
- import "../chunk-QOCWB4Q6.js";
14
- import "../chunk-6HH4IH4K.js";
15
- import "../chunk-KHGIM2BN.js";
16
- import "../chunk-EAGMQMRM.js";
17
- import "../chunk-CDSL3LLO.js";
10
+ import "../chunk-UTYTPDWN.js";
11
+ import "../chunk-5MSBI6NP.js";
12
+ import "../chunk-YYRZPEMA.js";
13
+ import "../chunk-O6RN46OS.js";
14
+ import "../chunk-RGZY77CD.js";
15
+ import "../chunk-A7XIL2WD.js";
16
+ import "../chunk-7PQZYCEP.js";
17
+ import "../chunk-S3EUZZJB.js";
18
18
  import "../chunk-EQRS3SGM.js";
19
- import "../chunk-YXWM4TNX.js";
19
+ import "../chunk-BYAXXBNO.js";
20
20
  import "../chunk-XHKBHWLX.js";
21
- import "../chunk-XP2KRTZD.js";
22
- import "../chunk-465UENKO.js";
23
- import "../chunk-34NNTYK6.js";
21
+ import "../chunk-KZIXHLPQ.js";
22
+ import "../chunk-RQM5SMMR.js";
23
+ import "../chunk-UCGQEAKZ.js";
24
24
  import "../chunk-GMXKITVA.js";
25
25
  import "../chunk-DINDL2CF.js";
26
- import "../chunk-5SALHATY.js";
26
+ import "../chunk-NYHNLMQO.js";
27
27
  import "../chunk-7QLSKOSU.js";
28
28
  import "../chunk-KZERVKTD.js";
29
- import "../chunk-5WLH2ENB.js";
29
+ import "../chunk-P4JVVJ2D.js";
30
30
  import "../chunk-T7E75EKA.js";
31
31
  import "../chunk-2UMNXADU.js";
32
- import "../chunk-5UWDYOZX.js";
32
+ import "../chunk-7IEB2GV4.js";
33
33
 
34
34
  // bin/pushary-bell-hook.ts
35
35
  var main = async () => {
@@ -5,38 +5,38 @@ import {
5
5
  liveAgentCount,
6
6
  ring,
7
7
  upgradeThreshold
8
- } from "../chunk-35RPUNYU.js";
8
+ } from "../chunk-VENQSVKA.js";
9
9
  import {
10
10
  addBellHooks,
11
11
  bellInstalled,
12
12
  removeBellHooks
13
- } from "../chunk-EAGMQMRM.js";
13
+ } from "../chunk-7PQZYCEP.js";
14
14
  import {
15
15
  claudeSettings
16
- } from "../chunk-34NNTYK6.js";
16
+ } from "../chunk-UCGQEAKZ.js";
17
17
  import {
18
18
  createIo
19
19
  } from "../chunk-5RUIFDTP.js";
20
20
  import {
21
21
  exitOnHelpFlag
22
- } from "../chunk-GOQHN2UH.js";
23
- import "../chunk-LZQVAEWP.js";
22
+ } from "../chunk-TWWLVOPB.js";
23
+ import "../chunk-FAH3D74E.js";
24
24
  import {
25
25
  parseFlags
26
26
  } from "../chunk-GMXKITVA.js";
27
27
  import "../chunk-DINDL2CF.js";
28
- import "../chunk-5SALHATY.js";
28
+ import "../chunk-NYHNLMQO.js";
29
29
  import "../chunk-7QLSKOSU.js";
30
30
  import {
31
31
  EXIT
32
32
  } from "../chunk-KZERVKTD.js";
33
- import "../chunk-5WLH2ENB.js";
33
+ import "../chunk-P4JVVJ2D.js";
34
34
  import {
35
35
  readJsonSafe,
36
36
  writeJsonAtomic
37
37
  } from "../chunk-T7E75EKA.js";
38
38
  import "../chunk-2UMNXADU.js";
39
- import "../chunk-5UWDYOZX.js";
39
+ import "../chunk-7IEB2GV4.js";
40
40
 
41
41
  // bin/pushary-bell.ts
42
42
  exitOnHelpFlag("bell");
@@ -8,7 +8,7 @@ import {
8
8
  describeIdleWindow,
9
9
  startProcessOwnership,
10
10
  withSpawnProcessOwnership
11
- } from "../chunk-XOUQUZ43.js";
11
+ } from "../chunk-GIXLZFEY.js";
12
12
  import {
13
13
  isDeferAnswer
14
14
  } from "../chunk-YHG74UFF.js";
@@ -17,24 +17,24 @@ import {
17
17
  loadSessionKey,
18
18
  registerTranscript,
19
19
  registeredTranscriptEnabled
20
- } from "../chunk-P232YODQ.js";
20
+ } from "../chunk-ESLLVHDY.js";
21
21
  import "../chunk-SGZJ5LYH.js";
22
- import "../chunk-REIZ5GXG.js";
23
- import "../chunk-FGNABUPN.js";
24
- import "../chunk-KLZJEMSE.js";
25
- import "../chunk-QOCWB4Q6.js";
22
+ import "../chunk-UTYTPDWN.js";
23
+ import "../chunk-5MSBI6NP.js";
24
+ import "../chunk-YYRZPEMA.js";
25
+ import "../chunk-O6RN46OS.js";
26
26
  import {
27
27
  ensureDaemonRunning
28
- } from "../chunk-6HH4IH4K.js";
29
- import "../chunk-KHGIM2BN.js";
30
- import "../chunk-EAGMQMRM.js";
28
+ } from "../chunk-RGZY77CD.js";
29
+ import "../chunk-A7XIL2WD.js";
30
+ import "../chunk-7PQZYCEP.js";
31
31
  import {
32
32
  encryptRecord
33
- } from "../chunk-CDSL3LLO.js";
33
+ } from "../chunk-S3EUZZJB.js";
34
34
  import "../chunk-EQRS3SGM.js";
35
35
  import {
36
36
  transcriptsEnabled
37
- } from "../chunk-YXWM4TNX.js";
37
+ } from "../chunk-BYAXXBNO.js";
38
38
  import {
39
39
  needsShell,
40
40
  spawnClaude
@@ -56,8 +56,8 @@ import {
56
56
  reportEvent,
57
57
  savePendingCommand,
58
58
  scopePathFor
59
- } from "../chunk-WOBHHXW5.js";
60
- import "../chunk-XP2KRTZD.js";
59
+ } from "../chunk-IF46POXX.js";
60
+ import "../chunk-KZIXHLPQ.js";
61
61
  import {
62
62
  DECISION_STOP_REASON,
63
63
  askUser,
@@ -70,16 +70,16 @@ import {
70
70
  } from "../chunk-LGXUGYUH.js";
71
71
  import {
72
72
  getMachineId
73
- } from "../chunk-465UENKO.js";
74
- import "../chunk-34NNTYK6.js";
73
+ } from "../chunk-RQM5SMMR.js";
74
+ import "../chunk-UCGQEAKZ.js";
75
75
  import "../chunk-GMXKITVA.js";
76
76
  import "../chunk-DINDL2CF.js";
77
- import "../chunk-5SALHATY.js";
77
+ import "../chunk-NYHNLMQO.js";
78
78
  import "../chunk-EYRGBYZG.js";
79
79
  import "../chunk-SAF6HGAA.js";
80
80
  import "../chunk-7QLSKOSU.js";
81
81
  import "../chunk-KZERVKTD.js";
82
- import "../chunk-5WLH2ENB.js";
82
+ import "../chunk-P4JVVJ2D.js";
83
83
  import "../chunk-T7E75EKA.js";
84
84
  import {
85
85
  getApiKey,
@@ -89,7 +89,7 @@ import {
89
89
  KILL_REASON,
90
90
  redactSecrets,
91
91
  resolveGate
92
- } from "../chunk-5UWDYOZX.js";
92
+ } from "../chunk-7IEB2GV4.js";
93
93
 
94
94
  // src/wrapper/localPassthrough.ts
95
95
  var SIGNAL_NUMBERS = {