pushary 1.9.97 → 1.9.100

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 (127) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/{api-WH3DLHJB.js → api-H734WJ2V.js} +10 -10
  3. package/dist/bin/pushary-bell-hook.js +27 -26
  4. package/dist/bin/pushary-bell.js +10 -10
  5. package/dist/bin/pushary-claude.js +48 -33
  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 -31
  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 +40 -39
  14. package/dist/bin/pushary-disconnect.js +26 -26
  15. package/dist/bin/pushary-display-hook.js +18 -17
  16. package/dist/bin/pushary-doctor.js +42 -42
  17. package/dist/bin/pushary-elicitation-hook.js +27 -26
  18. package/dist/bin/pushary-gemini-bridge.js +15 -15
  19. package/dist/bin/pushary-gemini-hook.js +29 -28
  20. package/dist/bin/pushary-hook.js +31 -30
  21. package/dist/bin/pushary-login.js +38 -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 +26 -25
  26. package/dist/bin/pushary-opencode-hook.js +28 -27
  27. package/dist/bin/pushary-permission-denied-hook.js +31 -30
  28. package/dist/bin/pushary-permission-hook.js +31 -30
  29. package/dist/bin/pushary-post-hook.js +26 -25
  30. package/dist/bin/pushary-prompt-hook.js +26 -25
  31. package/dist/bin/pushary-session-end-hook.js +28 -27
  32. package/dist/bin/pushary-session-start-hook.js +36 -35
  33. package/dist/bin/pushary-setup.js +103 -109
  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 +26 -25
  37. package/dist/bin/pushary-stopfailure-hook.js +26 -25
  38. package/dist/bin/pushary-suggestions.js +15 -15
  39. package/dist/bin/pushary-transcript-register.js +19 -18
  40. package/dist/bin/pushary-transcripts.js +27 -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-TSSV3NBD.js → chunk-2SFVZ3IT.js} +2 -2
  45. package/dist/{chunk-FZQSUS3R.js → chunk-33YOO7FG.js} +14 -14
  46. package/dist/{chunk-CG3C2WL7.js → chunk-3BBJO25D.js} +14 -12
  47. package/dist/{chunk-UAUADSJX.js → chunk-3OIUMHHO.js} +2 -2
  48. package/dist/{chunk-5RNZP53C.js → chunk-43CU2HYQ.js} +6 -6
  49. package/dist/{chunk-WOFHN2IZ.js → chunk-4FAJQPFY.js} +256 -12
  50. package/dist/{chunk-QCEY7TSX.js → chunk-4JUQ74CG.js} +3 -3
  51. package/dist/{chunk-CB2RYMAO.js → chunk-4QO267OY.js} +1 -1
  52. package/dist/{chunk-R7D3PH2M.js → chunk-4TLE7CSQ.js} +6 -6
  53. package/dist/{chunk-RRA6POT5.js → chunk-4TVLPGJV.js} +1 -1
  54. package/dist/{chunk-ORVMA5KJ.js → chunk-5PW25NHB.js} +3 -3
  55. package/dist/{chunk-W5IW7NZE.js → chunk-5QB6P3I7.js} +104 -2
  56. package/dist/{chunk-GN2L5CYF.js → chunk-6VFN4XTI.js} +1 -1
  57. package/dist/{chunk-Z6O6CDTP.js → chunk-7ZHLBWOV.js} +5 -5
  58. package/dist/{chunk-IED5CTYP.js → chunk-A7JQJUGZ.js} +3 -3
  59. package/dist/{chunk-VVHNHETX.js → chunk-ACVL2MHG.js} +2 -2
  60. package/dist/{chunk-GEA6ZV2P.js → chunk-AFGMZZEB.js} +2 -2
  61. package/dist/{chunk-NDJ7H2WF.js → chunk-AHIAB7JQ.js} +1 -1
  62. package/dist/chunk-BBNMGXZA.js +45 -0
  63. package/dist/{chunk-TKOL7DJH.js → chunk-BFEY6FRZ.js} +2 -2
  64. package/dist/{chunk-RILJLDKG.js → chunk-BIUD3TAY.js} +5 -5
  65. package/dist/{chunk-KYX7VBEE.js → chunk-CC24CQ7P.js} +2 -2
  66. package/dist/{chunk-5WYXFKZV.js → chunk-CK6YJZEK.js} +1 -1
  67. package/dist/{chunk-ZFUSWR2P.js → chunk-DCYA2SW2.js} +2 -2
  68. package/dist/{chunk-SXX47FHL.js → chunk-DIWNHZ6I.js} +2 -2
  69. package/dist/{chunk-5WOO44TA.js → chunk-DPGG3AAG.js} +5 -5
  70. package/dist/{chunk-EAJT6RYP.js → chunk-E2YENQFD.js} +7 -7
  71. package/dist/{chunk-VHOGSWUF.js → chunk-E34NVKR7.js} +3 -3
  72. package/dist/{chunk-APFQBVQW.js → chunk-E4YZIS4C.js} +6 -6
  73. package/dist/{chunk-RSITUL2U.js → chunk-ERO2ERIE.js} +2 -2
  74. package/dist/{chunk-JA6GCOW2.js → chunk-FIKNFZ7Z.js} +7 -7
  75. package/dist/{chunk-VPT3RDTO.js → chunk-G66WIAST.js} +0 -43
  76. package/dist/{chunk-6CDA4R5L.js → chunk-GKNTNKVQ.js} +3 -3
  77. package/dist/{chunk-VAY5AJ6N.js → chunk-GSQZTDPZ.js} +4 -4
  78. package/dist/{chunk-AUZITE2H.js → chunk-GTUCRZRJ.js} +6 -6
  79. package/dist/{chunk-JR6FCHAQ.js → chunk-IGEY7ZFQ.js} +3 -3
  80. package/dist/{chunk-TZE2S3XP.js → chunk-IGIWULLQ.js} +3 -3
  81. package/dist/{chunk-OBB6VTSG.js → chunk-K6QZMKAP.js} +5 -5
  82. package/dist/{chunk-5OLBO5EB.js → chunk-KACD6W6J.js} +1 -1
  83. package/dist/{chunk-RZD7ULBJ.js → chunk-KOUB4ZLX.js} +1 -1
  84. package/dist/{chunk-VVP4CP4O.js → chunk-KUIJMRES.js} +11 -10
  85. package/dist/{chunk-ZDIQPYM2.js → chunk-MP3SEXXJ.js} +1 -1
  86. package/dist/{chunk-2ZAFA3XI.js → chunk-MY7NJM56.js} +3 -3
  87. package/dist/{chunk-NTCVGJFC.js → chunk-N6UPDKCI.js} +4 -4
  88. package/dist/{chunk-HXUE6IIP.js → chunk-NTTFATKG.js} +5 -5
  89. package/dist/{chunk-OW4WEO56.js → chunk-O35JKL4T.js} +3 -3
  90. package/dist/{chunk-RPY5XCGA.js → chunk-ODJQ5KFS.js} +2 -2
  91. package/dist/{chunk-HWEEBVS7.js → chunk-OUF7TX2C.js} +4 -4
  92. package/dist/{chunk-CMDIKFVL.js → chunk-PWGD5EP6.js} +1 -1
  93. package/dist/{chunk-32577NGL.js → chunk-QD57EL3I.js} +1 -1
  94. package/dist/{chunk-IFQKSIID.js → chunk-RAASN7OG.js} +3 -3
  95. package/dist/{chunk-KNVTKFDP.js → chunk-SGECX2RY.js} +2 -2
  96. package/dist/{chunk-MFJFN4DA.js → chunk-SJXNDL73.js} +3 -3
  97. package/dist/{chunk-X22LLKBY.js → chunk-SOBHT3J7.js} +3 -3
  98. package/dist/{chunk-GNFUPHPZ.js → chunk-SQSL6DVX.js} +10 -10
  99. package/dist/{chunk-W3OTAHLV.js → chunk-SSLEGJYI.js} +4 -4
  100. package/dist/{chunk-5U63KUP3.js → chunk-T72OMEHB.js} +1 -1
  101. package/dist/{chunk-HD7AURL6.js → chunk-THHVB46D.js} +52 -7
  102. package/dist/{chunk-MYKZPTAL.js → chunk-TLERJKSE.js} +1 -1
  103. package/dist/{chunk-NI3NSURQ.js → chunk-UPQE4YPM.js} +1 -1
  104. package/dist/{chunk-E5WUBHVH.js → chunk-VMXY3PAT.js} +4 -4
  105. package/dist/{chunk-QP3OSLKU.js → chunk-W44TA4CT.js} +5 -5
  106. package/dist/{chunk-MGYGWHG5.js → chunk-WPK2UWDU.js} +1 -1
  107. package/dist/{chunk-T35RHO3X.js → chunk-WRCQCJA7.js} +5 -5
  108. package/dist/{chunk-5YRDZE5F.js → chunk-WVAJSBI2.js} +1 -1
  109. package/dist/{chunk-KZTN6OXM.js → chunk-XEGKTXTC.js} +6 -6
  110. package/dist/{chunk-4D4USO5K.js → chunk-XJF4WX5C.js} +6 -6
  111. package/dist/{chunk-LKDAMWTZ.js → chunk-YVAFDGK2.js} +4 -4
  112. package/dist/{chunk-R7TVELKF.js → chunk-Z6HHEV7A.js} +1 -1
  113. package/dist/{chunk-6RGQIKAC.js → chunk-ZG6M5VQV.js} +3 -3
  114. package/dist/{chunk-CP72YEEA.js → chunk-ZNPUYLOY.js} +1 -1
  115. package/dist/{codex-app-cards-switch-DFZK6GPW.js → codex-app-cards-switch-JKKTCZNB.js} +11 -11
  116. package/dist/{codex-desktop-launch-7QGN7SL7.js → codex-desktop-launch-6BONFDHF.js} +1 -1
  117. package/dist/{codex-session-launch-OWMNCYAH.js → codex-session-launch-5FRL6UGU.js} +18 -18
  118. package/dist/{config-ITPE5M6M.js → config-A5EC37VZ.js} +3 -3
  119. package/dist/{global-upgrade-PYEFLMJA.js → global-upgrade-W4ZTLGUY.js} +10 -10
  120. package/dist/{identity-WTYTOLG3.js → identity-2LPVILX4.js} +4 -4
  121. package/dist/{live-capabilities-HZ42KLZS.js → live-capabilities-SWMCZORB.js} +5 -5
  122. package/dist/{paths-6JUJIM74.js → paths-4SVXADJ6.js} +3 -3
  123. package/dist/{reapply-5WV6IS5V.js → reapply-WEXL57SG.js} +28 -28
  124. package/dist/src/index.js +30 -29
  125. package/dist/{upgrade-lock-ENAQL63D.js → upgrade-lock-NZ2MBGYE.js} +4 -4
  126. package/dist/{usage-BO7LGOA3.js → usage-U6H5UFS2.js} +3 -3
  127. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.100
4
+
5
+ - With Claude Code's permissions off, Pushary now asks before git sends your code to a place the command names:
6
+ - a `git push` whose repository, or `--repo` value, is a URL or host address, such as `git push https://example.com/acme/app.git main`, `git push git@example.com:acme/app.git HEAD`, `git push --all` to a URL, or `git push --repo=` with a URL. A repository held in a variable, such as `"$PUSH_URL"`, asks too;
7
+ - `git remote add`, in any form;
8
+ - `git send-pack` and `git http-push`.
9
+ - A push to a remote the repository already has runs as before, such as `git push`, `git push origin main`, `git push -u origin feature/x` or `git push origin HEAD:refs/heads/x`, and so does a push to a local folder, `git fetch` or `git ls-remote` from a URL, `git remote -v` and `git remote show`. Force, tag and delete pushes ask as before.
10
+ - "Never stop me" still lets every step run. Every other Claude Code mode, every other agent, and Always allow for Bash judge commands exactly as 1.9.99 did.
11
+ - Not asked about yet with permissions off: a repository given by a command substitution such as `$(cat file)`; the command in `--receive-pack`, `--exec` or `--upload-pack`; settings that send a plain push somewhere else, such as `remote.pushDefault`, `branch.main.pushRemote` or `branch.main.remote`; the `git -c` form of a setting that runs a program, such as `core.sshCommand`; `--config-env` and the `GIT_CONFIG_*` variables; `git.exe` in Bash; `xargs git push`; and `git subtree push` and `git lfs push`.
12
+
13
+ ## 1.9.99
14
+
15
+ - When you drive a terminal session from your phone through `pushary claude`, you get the "finished" push at the end of each turn again while Pushary for Mac is running. Since the server stopped pushing every clean turn end, the turn ended quietly in that setup, because the wrapper did not say the phone was driving. The wrapper now says so on each turn end and on each phone instruction it runs, so a phone instruction also no longer marks your Mac as at the keyboard. A turn that ends on an error, such as a rate limit, says it failed and why instead of "finished".
16
+ - With Claude Code's permissions off, Pushary now also asks about:
17
+ - changing a package's owners, dist-tags, access or team with `npm` or `pnpm` (`owner add`, `dist-tag add`, `deprecate` and the like), or `yarn owner` and `yarn tag` changes; listing them still runs;
18
+ - uploading a build to Apple with `xcrun altool --upload-app`, `--upload-package` or `--notarize-app`, or `xcrun notarytool submit`;
19
+ - sending mail with `sendmail`, `msmtp` or `ssmtp`, or with `mail`, `mailx` or `mutt` to an email address;
20
+ - changing where git sends commits: `git remote set-url`, a `git config` value for a remote's `url` or `pushurl` or a `url.<base>.insteadOf` rewrite, or the same with `git -c` on a push (`git remote -v`, `git config --get`, `git remote add` and `git -c` on a fetch still run);
21
+ - `shutdown`, `reboot`, `halt` and `poweroff` (`shutdown -c` still runs);
22
+ - an edit to, or a shell write into, a git hook in `.husky/`, a direnv `.envrc`, `.vscode/tasks.json`, `~/.npmrc`, `~/.netrc`, `~/.kube/config`, `CLAUDE.md`, `CLAUDE.local.md`, `AGENTS.md`, `AGENTS.override.md`, or a file in `.claude/commands/` or `.claude/agents/`. Reading them still runs.
23
+ - Every other Claude Code mode, every other agent, and Always allow for Bash judge commands and file edits exactly as 1.9.98 did.
24
+ - After `pushary login --force`, `setup` no longer replaces the new key with the old one your terminal still exports, however many times it runs. The first setup keeps the new workspace as before. A later setup in a terminal that still exports the old key, because it is the same terminal, you exported it again on purpose, or direnv did, asks "Continue as @your-new-workspace?" with yes as the default, and no moves this computer back to the old key. With nobody at the terminal it keeps the new key and says to run `login --force` to move back on purpose.
25
+
26
+ ## 1.9.98
27
+
28
+ - After `pushary login --force` moves this computer to another workspace and updates the `PUSHARY_API_KEY` line in your zsh or bash profile, `setup` in the same terminal now keeps the new workspace instead of saving the old key back over it. Login and setup say which workspace each key belongs to.
29
+ - When Pushary cannot be sure your terminals read the profile it updated (a `PUSHARY_API_KEY` line it did not write, a profile it cannot replace, a shell other than zsh or bash, or Windows), login and setup no longer say new terminals use the new key. They tell you to change `PUSHARY_API_KEY` where it is set if new terminals still get the old one, and setup keeps following the key your terminal has, so your agents and their approvals stay in one workspace. A key set by a tool such as direnv is not detected.
30
+ - The browser sign-in page lists your workspaces by name, with the plan when there is one, and leaves out sandboxes, workspaces where you only view, and shops. It preselects the Team workspace you chose to connect to, when there is one, and otherwise the workspace open in the dashboard.
31
+
3
32
  ## 1.9.97
4
33
 
5
34
  - Asking only about risky steps with permissions off is now for Claude Code's `--dangerously-skip-permissions` alone. Codex in every approval mode, and every other agent that reports `bypassPermissions`, gates exactly as it did in 1.9.93 again: `codex exec` reports that mode whatever its approval policy is, so in 1.9.94 to 1.9.96 a routine call that used to reach your phone ran without a question.
@@ -17,23 +17,23 @@ import {
17
17
  waitForQuestion,
18
18
  waitsForThePhone,
19
19
  withdrawQuestion
20
- } from "./chunk-Z6O6CDTP.js";
20
+ } from "./chunk-7ZHLBWOV.js";
21
21
  import "./chunk-POFBE6ZY.js";
22
- import "./chunk-E5WUBHVH.js";
23
- import "./chunk-OW4WEO56.js";
24
- import "./chunk-6RGQIKAC.js";
25
- import "./chunk-ZFUSWR2P.js";
26
- import "./chunk-KNVTKFDP.js";
27
- import "./chunk-6CDA4R5L.js";
28
- import "./chunk-RZD7ULBJ.js";
22
+ import "./chunk-VMXY3PAT.js";
23
+ import "./chunk-O35JKL4T.js";
24
+ import "./chunk-ZG6M5VQV.js";
25
+ import "./chunk-DCYA2SW2.js";
26
+ import "./chunk-SGECX2RY.js";
27
+ import "./chunk-GKNTNKVQ.js";
28
+ import "./chunk-KOUB4ZLX.js";
29
29
  import "./chunk-PPY5N2E6.js";
30
30
  import "./chunk-KZERVKTD.js";
31
- import "./chunk-CMDIKFVL.js";
31
+ import "./chunk-PWGD5EP6.js";
32
32
  import "./chunk-ZVU6WMMU.js";
33
33
  import {
34
34
  DECISION_STOP_REASON,
35
35
  UNVERIFIABLE_APPROVAL_REASON
36
- } from "./chunk-WOFHN2IZ.js";
36
+ } from "./chunk-4FAJQPFY.js";
37
37
  import "./chunk-MLKGABMK.js";
38
38
  export {
39
39
  ABANDONED_WAIT,
@@ -1,41 +1,42 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handleBell
4
- } from "../chunk-R7TVELKF.js";
4
+ } from "../chunk-Z6HHEV7A.js";
5
5
  import {
6
6
  readHookInput
7
- } from "../chunk-EAJT6RYP.js";
8
- import "../chunk-CG3C2WL7.js";
9
- import "../chunk-VPT3RDTO.js";
10
- import "../chunk-HXUE6IIP.js";
11
- import "../chunk-APFQBVQW.js";
12
- import "../chunk-HWEEBVS7.js";
13
- import "../chunk-5YRDZE5F.js";
14
- import "../chunk-5U63KUP3.js";
7
+ } from "../chunk-E2YENQFD.js";
8
+ import "../chunk-3BBJO25D.js";
9
+ import "../chunk-BBNMGXZA.js";
10
+ import "../chunk-G66WIAST.js";
11
+ import "../chunk-NTTFATKG.js";
12
+ import "../chunk-E4YZIS4C.js";
13
+ import "../chunk-OUF7TX2C.js";
14
+ import "../chunk-WVAJSBI2.js";
15
+ import "../chunk-T72OMEHB.js";
15
16
  import "../chunk-NMUI3ZWG.js";
16
- import "../chunk-UAUADSJX.js";
17
+ import "../chunk-3OIUMHHO.js";
17
18
  import "../chunk-XMSDA5WA.js";
18
- import "../chunk-CP72YEEA.js";
19
+ import "../chunk-ZNPUYLOY.js";
19
20
  import "../chunk-XHKBHWLX.js";
20
- import "../chunk-HD7AURL6.js";
21
- import "../chunk-VVP4CP4O.js";
22
- import "../chunk-ZDIQPYM2.js";
23
- import "../chunk-CB2RYMAO.js";
24
- import "../chunk-Z6O6CDTP.js";
21
+ import "../chunk-THHVB46D.js";
22
+ import "../chunk-KUIJMRES.js";
23
+ import "../chunk-MP3SEXXJ.js";
24
+ import "../chunk-4QO267OY.js";
25
+ import "../chunk-7ZHLBWOV.js";
25
26
  import "../chunk-POFBE6ZY.js";
26
- import "../chunk-E5WUBHVH.js";
27
- import "../chunk-OW4WEO56.js";
28
- import "../chunk-6RGQIKAC.js";
29
- import "../chunk-ZFUSWR2P.js";
30
- import "../chunk-GEA6ZV2P.js";
31
- import "../chunk-KNVTKFDP.js";
32
- import "../chunk-6CDA4R5L.js";
33
- import "../chunk-RZD7ULBJ.js";
27
+ import "../chunk-VMXY3PAT.js";
28
+ import "../chunk-O35JKL4T.js";
29
+ import "../chunk-ZG6M5VQV.js";
30
+ import "../chunk-DCYA2SW2.js";
31
+ import "../chunk-AFGMZZEB.js";
32
+ import "../chunk-SGECX2RY.js";
33
+ import "../chunk-GKNTNKVQ.js";
34
+ import "../chunk-KOUB4ZLX.js";
34
35
  import "../chunk-PPY5N2E6.js";
35
36
  import "../chunk-KZERVKTD.js";
36
- import "../chunk-CMDIKFVL.js";
37
+ import "../chunk-PWGD5EP6.js";
37
38
  import "../chunk-ZVU6WMMU.js";
38
- import "../chunk-WOFHN2IZ.js";
39
+ import "../chunk-4FAJQPFY.js";
39
40
  import "../chunk-MLKGABMK.js";
40
41
 
41
42
  // bin/pushary-bell-hook.ts
@@ -5,40 +5,40 @@ import {
5
5
  liveAgentCount,
6
6
  ring,
7
7
  upgradeThreshold
8
- } from "../chunk-R7TVELKF.js";
8
+ } from "../chunk-Z6HHEV7A.js";
9
9
  import {
10
10
  createIo
11
11
  } from "../chunk-FO3MDD26.js";
12
12
  import {
13
13
  exitOnHelpFlag
14
- } from "../chunk-MGYGWHG5.js";
14
+ } from "../chunk-WPK2UWDU.js";
15
15
  import {
16
16
  addBellHooks,
17
17
  bellInstalled,
18
18
  removeBellHooks
19
- } from "../chunk-5U63KUP3.js";
19
+ } from "../chunk-T72OMEHB.js";
20
20
  import {
21
21
  parseFlags
22
22
  } from "../chunk-NMUI3ZWG.js";
23
- import "../chunk-HD7AURL6.js";
24
- import "../chunk-GEA6ZV2P.js";
23
+ import "../chunk-THHVB46D.js";
24
+ import "../chunk-AFGMZZEB.js";
25
25
  import {
26
26
  claudeSettings
27
- } from "../chunk-KNVTKFDP.js";
27
+ } from "../chunk-SGECX2RY.js";
28
28
  import {
29
29
  readJsonSafe,
30
30
  writeJsonAtomic
31
- } from "../chunk-6CDA4R5L.js";
32
- import "../chunk-RZD7ULBJ.js";
31
+ } from "../chunk-GKNTNKVQ.js";
32
+ import "../chunk-KOUB4ZLX.js";
33
33
  import "../chunk-PPY5N2E6.js";
34
34
  import {
35
35
  EXIT
36
36
  } from "../chunk-KZERVKTD.js";
37
- import "../chunk-CMDIKFVL.js";
37
+ import "../chunk-PWGD5EP6.js";
38
38
  import "../chunk-ZVU6WMMU.js";
39
39
  import {
40
40
  isRecord
41
- } from "../chunk-WOFHN2IZ.js";
41
+ } from "../chunk-4FAJQPFY.js";
42
42
  import "../chunk-MLKGABMK.js";
43
43
 
44
44
  // bin/pushary-bell.ts
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  WRAPPER_ACTIVE_ENV,
4
4
  findClaudeBinary
5
- } from "../chunk-KYX7VBEE.js";
5
+ } from "../chunk-CC24CQ7P.js";
6
6
  import {
7
7
  CommandReceipts,
8
8
  controllerCommandSchema
@@ -12,41 +12,43 @@ import {
12
12
  describeIdleWindow,
13
13
  startProcessOwnership,
14
14
  withSpawnProcessOwnership
15
- } from "../chunk-VHOGSWUF.js";
16
- import "../chunk-NI3NSURQ.js";
15
+ } from "../chunk-E34NVKR7.js";
16
+ import "../chunk-UPQE4YPM.js";
17
17
  import {
18
18
  announceSubscriptionRequired,
19
19
  isDeferAnswer
20
- } from "../chunk-GN2L5CYF.js";
20
+ } from "../chunk-6VFN4XTI.js";
21
21
  import {
22
22
  claudeTranscriptPath,
23
23
  redactDraft,
24
24
  registerTranscript,
25
25
  registeredTranscriptEnabled,
26
26
  startDraftPublisher
27
- } from "../chunk-CG3C2WL7.js";
28
- import "../chunk-VPT3RDTO.js";
27
+ } from "../chunk-3BBJO25D.js";
28
+ import "../chunk-BBNMGXZA.js";
29
+ import "../chunk-G66WIAST.js";
29
30
  import {
30
31
  ensureDaemonRunning
31
- } from "../chunk-APFQBVQW.js";
32
- import "../chunk-HWEEBVS7.js";
33
- import "../chunk-5YRDZE5F.js";
34
- import "../chunk-5U63KUP3.js";
32
+ } from "../chunk-E4YZIS4C.js";
33
+ import "../chunk-OUF7TX2C.js";
34
+ import "../chunk-WVAJSBI2.js";
35
+ import "../chunk-T72OMEHB.js";
35
36
  import "../chunk-NMUI3ZWG.js";
36
- import "../chunk-UAUADSJX.js";
37
+ import "../chunk-3OIUMHHO.js";
37
38
  import {
38
39
  external_exports
39
40
  } from "../chunk-XMSDA5WA.js";
40
41
  import {
41
42
  transcriptsEnabled
42
- } from "../chunk-CP72YEEA.js";
43
+ } from "../chunk-ZNPUYLOY.js";
43
44
  import {
44
45
  needsShell,
45
46
  spawnClaude
46
47
  } from "../chunk-XHKBHWLX.js";
47
- import "../chunk-HD7AURL6.js";
48
+ import "../chunk-THHVB46D.js";
48
49
  import {
49
50
  DEFAULT_SESSION,
51
+ PHONE_DRIVER,
50
52
  fetchModeState,
51
53
  getPolicy,
52
54
  markPendingCommandDelivered,
@@ -57,17 +59,18 @@ import {
57
59
  removePendingCommand,
58
60
  reportEvent,
59
61
  savePendingCommand
60
- } from "../chunk-VVP4CP4O.js";
62
+ } from "../chunk-KUIJMRES.js";
61
63
  import {
62
64
  UNNAMED_ACTION,
63
65
  deriveToolTarget,
66
+ describeStopFailure,
64
67
  describeToolCall,
65
68
  scopePathFor
66
- } from "../chunk-ZDIQPYM2.js";
69
+ } from "../chunk-MP3SEXXJ.js";
67
70
  import {
68
71
  repoKeyFor,
69
72
  repositoryScopeFor
70
- } from "../chunk-CB2RYMAO.js";
73
+ } from "../chunk-4QO267OY.js";
71
74
  import {
72
75
  askUser,
73
76
  cancelQuestion,
@@ -79,30 +82,30 @@ import {
79
82
  waitForAnswer,
80
83
  waitsForThePhone,
81
84
  withdrawQuestion
82
- } from "../chunk-Z6O6CDTP.js";
85
+ } from "../chunk-7ZHLBWOV.js";
83
86
  import "../chunk-POFBE6ZY.js";
84
87
  import {
85
88
  SubscriptionRequiredError
86
- } from "../chunk-E5WUBHVH.js";
87
- import "../chunk-OW4WEO56.js";
88
- import "../chunk-6RGQIKAC.js";
89
+ } from "../chunk-VMXY3PAT.js";
90
+ import "../chunk-O35JKL4T.js";
91
+ import "../chunk-ZG6M5VQV.js";
89
92
  import {
90
93
  getMachineId
91
- } from "../chunk-ZFUSWR2P.js";
92
- import "../chunk-GEA6ZV2P.js";
94
+ } from "../chunk-DCYA2SW2.js";
95
+ import "../chunk-AFGMZZEB.js";
93
96
  import {
94
97
  claudeConfigDir
95
- } from "../chunk-KNVTKFDP.js";
96
- import "../chunk-6CDA4R5L.js";
98
+ } from "../chunk-SGECX2RY.js";
99
+ import "../chunk-GKNTNKVQ.js";
97
100
  import {
98
101
  getApiKey,
99
102
  getBaseUrl
100
- } from "../chunk-RZD7ULBJ.js";
103
+ } from "../chunk-KOUB4ZLX.js";
101
104
  import "../chunk-PPY5N2E6.js";
102
105
  import "../chunk-KZERVKTD.js";
103
106
  import {
104
107
  NPX_LATEST_COMMAND
105
- } from "../chunk-CMDIKFVL.js";
108
+ } from "../chunk-PWGD5EP6.js";
106
109
  import "../chunk-ZVU6WMMU.js";
107
110
  import {
108
111
  DECISION_STOP_REASON,
@@ -115,7 +118,7 @@ import {
115
118
  refusesWhenUnanswered,
116
119
  resolveGate,
117
120
  timeoutActionWithoutLocalPrompt
118
- } from "../chunk-WOFHN2IZ.js";
121
+ } from "../chunk-4FAJQPFY.js";
119
122
  import "../chunk-MLKGABMK.js";
120
123
 
121
124
  // src/wrapper/localPassthrough.ts
@@ -281,6 +284,16 @@ var startTranscriptDraft = (apiKey, getSessionId, runtime = {}) => {
281
284
  // src/wrapper/dualMode.ts
282
285
  import { basename } from "path";
283
286
 
287
+ // src/wrapper/sdkTurnEnd.ts
288
+ var SDK_RESULT = "result";
289
+ var SDK_ERROR_SUBTYPE = /^error_/;
290
+ var TURN_COMPLETE_ACTION = "Turn complete";
291
+ var TURN_FAILED_ACTION = "Turn failed";
292
+ var sdkTurnFailed = (message) => message.is_error === true || typeof message.subtype === "string" && SDK_ERROR_SUBTYPE.test(message.subtype);
293
+ var sdkTurnFailureReason = (message) => describeStopFailure(typeof message.result === "string" && message.result.trim() ? message.result : message.subtype);
294
+ var isSdkTurnEnd = (message) => message.type === SDK_RESULT;
295
+ var phoneTurnEndOf = (message) => sdkTurnFailed(message) ? { action: TURN_FAILED_ACTION, details: { driver: PHONE_DRIVER, error: sdkTurnFailureReason(message) } } : { action: TURN_COMPLETE_ACTION, details: { driver: PHONE_DRIVER } };
296
+
284
297
  // src/wrapper/sdkLoader.ts
285
298
  import { spawn } from "child_process";
286
299
  import { existsSync, mkdirSync, writeFileSync } from "fs";
@@ -1727,19 +1740,20 @@ var runDualMode = async (binary, args2, startingMode, runtime = {}) => {
1727
1740
  });
1728
1741
  await ownership.ready;
1729
1742
  };
1730
- const announcePresence = async (event, action) => {
1743
+ const announcePresence = async (event, action, details = {}) => {
1731
1744
  if (!sessionId) return Promise.resolve();
1732
1745
  try {
1733
1746
  await ensureOwnership();
1734
1747
  ownership?.touch();
1735
1748
  await reportEvent(
1736
- { event, agentType: "claude_code", agentName, action, sessionId, machineId, pid: process.pid },
1749
+ { event, agentType: "claude_code", agentName, action, sessionId, machineId, pid: process.pid, ...details },
1737
1750
  { maxAttempts: event === "session_start" ? 4 : 2, timeoutMs: 4e3, requireOk: event === "session_start" }
1738
1751
  );
1739
1752
  } catch (error) {
1740
1753
  if (runtime.onReady && event === "session_start") throw error;
1741
1754
  }
1742
1755
  };
1756
+ const announcePhonePrompt = () => announcePresence("user_prompt", "Working on your message", { driver: PHONE_DRIVER });
1743
1757
  let presenceHeartbeat;
1744
1758
  let transcriptStarted;
1745
1759
  const ensureTranscriptSync = () => {
@@ -1791,7 +1805,7 @@ var runDualMode = async (binary, args2, startingMode, runtime = {}) => {
1791
1805
  }
1792
1806
  if (finished || !input.push(userMessage(command))) return false;
1793
1807
  activeLeg?.onPhoneCommand();
1794
- void announcePresence("user_prompt", "Working on your message");
1808
+ void announcePhonePrompt();
1795
1809
  return true;
1796
1810
  };
1797
1811
  const receipts = new CommandReceipts({
@@ -1800,7 +1814,7 @@ var runDualMode = async (binary, args2, startingMode, runtime = {}) => {
1800
1814
  if (controlMode !== "remote" || finished || !remoteAvailable || !sessionId) return "failed";
1801
1815
  if (!input.push({ ...userMessage(command.text), uuid: command.id })) return "failed";
1802
1816
  activeLeg?.onPhoneCommand();
1803
- void announcePresence("user_prompt", "Working on your message");
1817
+ void announcePhonePrompt();
1804
1818
  },
1805
1819
  log: (message) => process.stderr.write(`${message}
1806
1820
  `)
@@ -1816,10 +1830,11 @@ var runDualMode = async (binary, args2, startingMode, runtime = {}) => {
1816
1830
  const text = extractAssistantText(message);
1817
1831
  if (text) process.stdout.write(`${text}
1818
1832
  `);
1819
- } else if (message.type === "result") {
1833
+ } else if (isSdkTurnEnd(message)) {
1820
1834
  if (typeof message.total_cost_usd === "number") totalCostUsd = message.total_cost_usd;
1821
1835
  process.stderr.write("[pushary] turn complete \u2014 standing by for phone commands\n");
1822
- void announcePresence("stop", "Turn complete");
1836
+ const turnEnd = phoneTurnEndOf(message);
1837
+ void announcePresence("stop", turnEnd.action, turnEnd.details);
1823
1838
  }
1824
1839
  };
1825
1840
  const declineTakeover = (reason, message) => {
@@ -15,30 +15,30 @@ import {
15
15
  storedMacAppState,
16
16
  storedPusharyKeychainServices,
17
17
  waitForMacAppExit
18
- } from "../chunk-2ZAFA3XI.js";
18
+ } from "../chunk-MY7NJM56.js";
19
19
  import {
20
20
  PUSHARY_SKILL_NAME,
21
21
  PUSHARY_SKILL_SOURCE,
22
22
  createGuards
23
23
  } from "../chunk-J42EAEX3.js";
24
- import "../chunk-TKOL7DJH.js";
24
+ import "../chunk-BFEY6FRZ.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-T35RHO3X.js";
31
+ } from "../chunk-WRCQCJA7.js";
32
32
  import {
33
33
  isCursorPluginLeftover,
34
34
  releaseSoleGate,
35
35
  withoutPusharyCursorHooks
36
- } from "../chunk-VAY5AJ6N.js";
36
+ } from "../chunk-GSQZTDPZ.js";
37
37
  import {
38
38
  shortenHome,
39
39
  unregisterPluginLocation,
40
40
  vscodeSettingsTargets
41
- } from "../chunk-5WOO44TA.js";
41
+ } from "../chunk-DPGG3AAG.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-QP3OSLKU.js";
50
- import "../chunk-VVHNHETX.js";
49
+ } from "../chunk-W44TA4CT.js";
50
+ import "../chunk-ACVL2MHG.js";
51
51
  import {
52
52
  HERMES_CONFIG_FILE,
53
53
  defaultHermesHome,
54
54
  hermesReceiptPaths,
55
55
  removeHermesWiring
56
- } from "../chunk-JR6FCHAQ.js";
56
+ } from "../chunk-IGEY7ZFQ.js";
57
57
  import "../chunk-QCGNGEGE.js";
58
58
  import {
59
59
  planClineRemoval,
60
60
  planFxRemoval,
61
61
  removeClineServer
62
- } from "../chunk-OBB6VTSG.js";
63
- import "../chunk-TZE2S3XP.js";
64
- import "../chunk-RSITUL2U.js";
62
+ } from "../chunk-K6QZMKAP.js";
63
+ import "../chunk-IGIWULLQ.js";
64
+ import "../chunk-ERO2ERIE.js";
65
65
  import {
66
66
  OPENCODE_ASKED_PERMISSIONS,
67
67
  OPENCODE_PLUGIN_SIBLING,
@@ -75,15 +75,15 @@ import {
75
75
  openCodePluginDir,
76
76
  openCodePluginFile,
77
77
  removeOpenCodeMcpServer
78
- } from "../chunk-4D4USO5K.js";
78
+ } from "../chunk-XJF4WX5C.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-MGYGWHG5.js";
86
- import "../chunk-NI3NSURQ.js";
85
+ } from "../chunk-WPK2UWDU.js";
86
+ import "../chunk-UPQE4YPM.js";
87
87
  import {
88
88
  compatibleConfigFile,
89
89
  compatibleDocuments,
@@ -95,10 +95,10 @@ import {
95
95
  removeCompatibleHooks,
96
96
  removeCompatibleMcpServer,
97
97
  serializeConfigDocument
98
- } from "../chunk-HXUE6IIP.js";
98
+ } from "../chunk-NTTFATKG.js";
99
99
  import {
100
100
  disableDaemonService
101
- } from "../chunk-APFQBVQW.js";
101
+ } from "../chunk-E4YZIS4C.js";
102
102
  import {
103
103
  hookOwnerOf,
104
104
  isHookTakeoverReceipt,
@@ -107,9 +107,9 @@ import {
107
107
  resolveBridgeStub,
108
108
  restoreHookTakeover,
109
109
  restoreMcpServer
110
- } from "../chunk-HWEEBVS7.js";
111
- import "../chunk-5YRDZE5F.js";
112
- import "../chunk-5U63KUP3.js";
110
+ } from "../chunk-OUF7TX2C.js";
111
+ import "../chunk-WVAJSBI2.js";
112
+ import "../chunk-T72OMEHB.js";
113
113
  import {
114
114
  parseFlags
115
115
  } from "../chunk-NMUI3ZWG.js";
@@ -119,18 +119,18 @@ import {
119
119
  isDisabledExport,
120
120
  removeClaudeAlias,
121
121
  shellProfileCandidates
122
- } from "../chunk-HD7AURL6.js";
122
+ } from "../chunk-THHVB46D.js";
123
123
  import "../chunk-E46NE7FB.js";
124
- import "../chunk-VVP4CP4O.js";
125
- import "../chunk-ZDIQPYM2.js";
126
- import "../chunk-CB2RYMAO.js";
127
- import "../chunk-Z6O6CDTP.js";
124
+ import "../chunk-KUIJMRES.js";
125
+ import "../chunk-MP3SEXXJ.js";
126
+ import "../chunk-4QO267OY.js";
127
+ import "../chunk-7ZHLBWOV.js";
128
128
  import "../chunk-POFBE6ZY.js";
129
- import "../chunk-E5WUBHVH.js";
130
- import "../chunk-OW4WEO56.js";
131
- import "../chunk-6RGQIKAC.js";
132
- import "../chunk-ZFUSWR2P.js";
133
- import "../chunk-GEA6ZV2P.js";
129
+ import "../chunk-VMXY3PAT.js";
130
+ import "../chunk-O35JKL4T.js";
131
+ import "../chunk-ZG6M5VQV.js";
132
+ import "../chunk-DCYA2SW2.js";
133
+ import "../chunk-AFGMZZEB.js";
134
134
  import {
135
135
  claudeConfigDir,
136
136
  claudeJson,
@@ -173,24 +173,24 @@ import {
173
173
  restoreCodexHookTrust,
174
174
  vscodePluginDir,
175
175
  vscodePluginMcp
176
- } from "../chunk-KNVTKFDP.js";
176
+ } from "../chunk-SGECX2RY.js";
177
177
  import {
178
178
  cleanNpmEnv,
179
179
  globalPackageState,
180
180
  npmIsOnPath,
181
181
  readGlobalFolder,
182
182
  readGlobalPrefix
183
- } from "../chunk-6CDA4R5L.js";
183
+ } from "../chunk-GKNTNKVQ.js";
184
184
  import {
185
185
  getBaseUrl
186
- } from "../chunk-RZD7ULBJ.js";
186
+ } from "../chunk-KOUB4ZLX.js";
187
187
  import "../chunk-PPY5N2E6.js";
188
188
  import {
189
189
  EXIT
190
190
  } from "../chunk-KZERVKTD.js";
191
191
  import {
192
192
  NPX_LATEST_COMMAND
193
- } from "../chunk-CMDIKFVL.js";
193
+ } from "../chunk-PWGD5EP6.js";
194
194
  import {
195
195
  CLI_PACKAGE_NAMES,
196
196
  globalPackageFolder,
@@ -204,7 +204,7 @@ import {
204
204
  SUPPORT_EMAIL,
205
205
  isValidApiKey,
206
206
  redactSecrets
207
- } from "../chunk-WOFHN2IZ.js";
207
+ } from "../chunk-4FAJQPFY.js";
208
208
  import "../chunk-MLKGABMK.js";
209
209
 
210
210
  // bin/pushary-clean.ts
@@ -1,45 +1,45 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCodexBridge
4
- } from "../chunk-KZTN6OXM.js";
5
- import "../chunk-5OLBO5EB.js";
4
+ } from "../chunk-XEGKTXTC.js";
5
+ import "../chunk-KACD6W6J.js";
6
6
  import {
7
7
  resolveProviderBinary
8
- } from "../chunk-LKDAMWTZ.js";
9
- import "../chunk-QCEY7TSX.js";
8
+ } from "../chunk-YVAFDGK2.js";
9
+ import "../chunk-4JUQ74CG.js";
10
10
  import "../chunk-N5P2FLOJ.js";
11
11
  import {
12
12
  withSpawnProcessOwnership
13
- } from "../chunk-VHOGSWUF.js";
14
- import "../chunk-NI3NSURQ.js";
15
- import "../chunk-UAUADSJX.js";
13
+ } from "../chunk-E34NVKR7.js";
14
+ import "../chunk-UPQE4YPM.js";
15
+ import "../chunk-3OIUMHHO.js";
16
16
  import "../chunk-XMSDA5WA.js";
17
17
  import {
18
18
  transcriptsEnabled
19
- } from "../chunk-CP72YEEA.js";
19
+ } from "../chunk-ZNPUYLOY.js";
20
20
  import "../chunk-XHKBHWLX.js";
21
- import "../chunk-HD7AURL6.js";
22
- import "../chunk-CB2RYMAO.js";
23
- import "../chunk-Z6O6CDTP.js";
21
+ import "../chunk-THHVB46D.js";
22
+ import "../chunk-4QO267OY.js";
23
+ import "../chunk-7ZHLBWOV.js";
24
24
  import "../chunk-POFBE6ZY.js";
25
- import "../chunk-E5WUBHVH.js";
26
- import "../chunk-OW4WEO56.js";
27
- import "../chunk-6RGQIKAC.js";
25
+ import "../chunk-VMXY3PAT.js";
26
+ import "../chunk-O35JKL4T.js";
27
+ import "../chunk-ZG6M5VQV.js";
28
28
  import {
29
29
  getMachineId
30
- } from "../chunk-ZFUSWR2P.js";
31
- import "../chunk-GEA6ZV2P.js";
32
- import "../chunk-KNVTKFDP.js";
33
- import "../chunk-6CDA4R5L.js";
30
+ } from "../chunk-DCYA2SW2.js";
31
+ import "../chunk-AFGMZZEB.js";
32
+ import "../chunk-SGECX2RY.js";
33
+ import "../chunk-GKNTNKVQ.js";
34
34
  import {
35
35
  getApiKey,
36
36
  getBaseUrl
37
- } from "../chunk-RZD7ULBJ.js";
37
+ } from "../chunk-KOUB4ZLX.js";
38
38
  import "../chunk-PPY5N2E6.js";
39
39
  import "../chunk-KZERVKTD.js";
40
- import "../chunk-CMDIKFVL.js";
40
+ import "../chunk-PWGD5EP6.js";
41
41
  import "../chunk-ZVU6WMMU.js";
42
- import "../chunk-WOFHN2IZ.js";
42
+ import "../chunk-4FAJQPFY.js";
43
43
  import "../chunk-MLKGABMK.js";
44
44
 
45
45
  // bin/pushary-codex-bridge.ts