@pushary/agent-hooks 0.95.5 → 0.95.7

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 (88) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/data/cursor-plugin/.cursor-plugin/plugin.json +1 -1
  3. package/data/cursor-plugin/CHANGELOG.md +7 -0
  4. package/data/cursor-plugin/scripts/pushary-gate.mjs +72 -17
  5. package/data/vscode-plugin/.claude-plugin/plugin.json +1 -1
  6. package/data/vscode-plugin/CHANGELOG.md +6 -0
  7. package/data/vscode-plugin/scripts/pushary-gate.mjs +76 -24
  8. package/dist/bin/pushary-bell-hook.js +18 -18
  9. package/dist/bin/pushary-bell.js +7 -7
  10. package/dist/bin/pushary-claude.js +24 -24
  11. package/dist/bin/pushary-clean.js +18 -18
  12. package/dist/bin/pushary-codex-bridge.js +29 -12
  13. package/dist/bin/pushary-codex-hook.js +29 -29
  14. package/dist/bin/pushary-codex.js +7 -7
  15. package/dist/bin/pushary-connect.js +8 -8
  16. package/dist/bin/pushary-cowork.js +5 -5
  17. package/dist/bin/pushary-daemon.js +24 -24
  18. package/dist/bin/pushary-disconnect.js +8 -8
  19. package/dist/bin/pushary-doctor.js +91 -36
  20. package/dist/bin/pushary-elicitation-hook.js +17 -17
  21. package/dist/bin/pushary-gemini-bridge.js +9 -9
  22. package/dist/bin/pushary-gemini-hook.js +65 -50
  23. package/dist/bin/pushary-hook.js +24 -24
  24. package/dist/bin/pushary-login.js +9 -9
  25. package/dist/bin/pushary-logout.js +6 -6
  26. package/dist/bin/pushary-mode.js +5 -5
  27. package/dist/bin/pushary-notification-hook.js +19 -19
  28. package/dist/bin/pushary-opencode-hook.js +29 -29
  29. package/dist/bin/pushary-permission-denied-hook.js +22 -22
  30. package/dist/bin/pushary-permission-hook.js +22 -22
  31. package/dist/bin/pushary-post-hook.js +19 -19
  32. package/dist/bin/pushary-prompt-hook.js +19 -19
  33. package/dist/bin/pushary-session-end-hook.js +19 -19
  34. package/dist/bin/pushary-session-start-hook.js +22 -22
  35. package/dist/bin/pushary-setup.js +45 -38
  36. package/dist/bin/pushary-stats.js +4 -4
  37. package/dist/bin/pushary-status.js +14 -10
  38. package/dist/bin/pushary-stop-hook.js +19 -19
  39. package/dist/bin/pushary-stopfailure-hook.js +19 -19
  40. package/dist/bin/pushary-suggestions.js +2 -2
  41. package/dist/bin/pushary-transcript-register.js +16 -16
  42. package/dist/bin/pushary-transcripts.js +7 -7
  43. package/dist/bin/pushary-upgrade.js +16 -16
  44. package/dist/bin/pushary-wait.js +8 -7
  45. package/dist/bin/pushary.js +1 -1
  46. package/dist/{chunk-N4VNLISN.js → chunk-4OSQZ5TB.js} +2 -2
  47. package/dist/{chunk-IM2A5H33.js → chunk-54W7ELDQ.js} +1 -1
  48. package/dist/{chunk-UCS65VVR.js → chunk-5GKNAQTG.js} +1 -1
  49. package/dist/{chunk-Z2UWFEJW.js → chunk-6W2WGNO5.js} +7 -7
  50. package/dist/{chunk-2D7BAOMY.js → chunk-7RNY3UHJ.js} +3 -3
  51. package/dist/{chunk-OW6AZDY2.js → chunk-BGX4QUQF.js} +1 -1
  52. package/dist/{chunk-I6GZX3FT.js → chunk-BQL7UDIB.js} +1 -1
  53. package/dist/{chunk-HGUZOUB2.js → chunk-CNUDZS4V.js} +3 -3
  54. package/dist/chunk-CVWG2N3Y.js +16 -0
  55. package/dist/{chunk-BMANRGJQ.js → chunk-EMGGUO2Q.js} +1 -1
  56. package/dist/{chunk-QHWXUNMN.js → chunk-FRXZMCVA.js} +1 -1
  57. package/dist/{chunk-DLLAWCQB.js → chunk-GOQHN2UH.js} +1 -1
  58. package/dist/{chunk-HBHEX3JQ.js → chunk-GQRU4KJF.js} +3 -3
  59. package/dist/{chunk-4RF52LSU.js → chunk-HAXZ6CBF.js} +8 -8
  60. package/dist/{chunk-OEKFD5BC.js → chunk-IZVK6FKD.js} +1 -1
  61. package/dist/{chunk-KAVDAZ7A.js → chunk-L7NOG547.js} +1 -1
  62. package/dist/{chunk-D6PRC3YQ.js → chunk-LZQVAEWP.js} +2 -1
  63. package/dist/{chunk-WDKHZRAS.js → chunk-MC5WUOJJ.js} +41 -0
  64. package/dist/{chunk-6VANQN5Q.js → chunk-NKUE5SJB.js} +2 -2
  65. package/dist/{chunk-QQGNFHIK.js → chunk-PQGLDN4V.js} +2 -2
  66. package/dist/{chunk-CUEZMPLJ.js → chunk-QJPYJVL3.js} +1 -1
  67. package/dist/{chunk-RLXVW4AM.js → chunk-SDNTRS76.js} +1 -1
  68. package/dist/{chunk-4PX4QK2Z.js → chunk-SKPXQRKN.js} +1 -1
  69. package/dist/{chunk-VTO3TNIB.js → chunk-TY6IJY6I.js} +1 -1
  70. package/dist/{chunk-HQIVR7MM.js → chunk-U5RIXR7I.js} +1 -1
  71. package/dist/{chunk-WRDLHR2F.js → chunk-UKMLSQXA.js} +2 -2
  72. package/dist/{chunk-6AEM5RCS.js → chunk-USWT4PTR.js} +1 -1
  73. package/dist/{chunk-D62EONG3.js → chunk-VDI645ZX.js} +1 -1
  74. package/dist/{chunk-OI3DJA7N.js → chunk-VERXHIQF.js} +1 -1
  75. package/dist/{chunk-67YNQ3QA.js → chunk-VIUOGMT5.js} +18 -14
  76. package/dist/{chunk-S5CMLR35.js → chunk-VMQU7YEJ.js} +1 -1
  77. package/dist/{chunk-XLOELLAS.js → chunk-VMZ4SWQD.js} +4 -4
  78. package/dist/{chunk-32RMQO5Z.js → chunk-WAUAYRUQ.js} +47 -4
  79. package/dist/{chunk-VOSGZ6PH.js → chunk-WPS5IM7B.js} +3 -3
  80. package/dist/{chunk-HCMM3BOW.js → chunk-XJQOVWBQ.js} +14 -11
  81. package/dist/{chunk-KI4PA7MQ.js → chunk-XO3JR3OP.js} +90 -18
  82. package/dist/{chunk-IVQMNLSA.js → chunk-XUTSZYYJ.js} +1 -1
  83. package/dist/{chunk-2ZTL3PGN.js → chunk-XZWUOCJZ.js} +1 -1
  84. package/dist/{chunk-BDI2MXTT.js → chunk-Z4JVEL7R.js} +1 -1
  85. package/dist/src/index.d.ts +3 -0
  86. package/dist/src/index.js +10 -10
  87. package/package.json +1 -1
  88. package/dist/chunk-IIENZE2J.js +0 -15
@@ -4,40 +4,40 @@ import {
4
4
  } from "../chunk-PQ4K74WL.js";
5
5
  import {
6
6
  readHookInput
7
- } from "../chunk-OEKFD5BC.js";
8
- import "../chunk-4RF52LSU.js";
9
- import "../chunk-BMANRGJQ.js";
10
- import "../chunk-VOSGZ6PH.js";
11
- import "../chunk-2ZTL3PGN.js";
12
- import "../chunk-CUEZMPLJ.js";
13
- import "../chunk-HBHEX3JQ.js";
14
- import "../chunk-XLOELLAS.js";
15
- import "../chunk-2D7BAOMY.js";
7
+ } from "../chunk-IZVK6FKD.js";
8
+ import "../chunk-HAXZ6CBF.js";
9
+ import "../chunk-EMGGUO2Q.js";
10
+ import "../chunk-WPS5IM7B.js";
11
+ import "../chunk-XZWUOCJZ.js";
12
+ import "../chunk-QJPYJVL3.js";
13
+ import "../chunk-GQRU4KJF.js";
14
+ import "../chunk-VMZ4SWQD.js";
15
+ import "../chunk-7RNY3UHJ.js";
16
16
  import "../chunk-GOPIMNVC.js";
17
17
  import "../chunk-3AJIK5AO.js";
18
- import "../chunk-4PX4QK2Z.js";
18
+ import "../chunk-SKPXQRKN.js";
19
19
  import "../chunk-EQRS3SGM.js";
20
- import "../chunk-OI3DJA7N.js";
20
+ import "../chunk-VERXHIQF.js";
21
21
  import "../chunk-XHKBHWLX.js";
22
22
  import "../chunk-L4ZCFMWW.js";
23
23
  import {
24
24
  handleSessionEnd
25
- } from "../chunk-HCMM3BOW.js";
25
+ } from "../chunk-XJQOVWBQ.js";
26
+ import "../chunk-Z4JVEL7R.js";
27
+ import "../chunk-XUTSZYYJ.js";
26
28
  import "../chunk-XS33QBJA.js";
27
- import "../chunk-BDI2MXTT.js";
28
- import "../chunk-IVQMNLSA.js";
29
- import "../chunk-N4VNLISN.js";
30
- import "../chunk-OW6AZDY2.js";
29
+ import "../chunk-4OSQZ5TB.js";
30
+ import "../chunk-BGX4QUQF.js";
31
31
  import "../chunk-GMXKITVA.js";
32
32
  import "../chunk-DINDL2CF.js";
33
- import "../chunk-S5CMLR35.js";
33
+ import "../chunk-VMQU7YEJ.js";
34
34
  import "../chunk-EYRGBYZG.js";
35
35
  import "../chunk-SAF6HGAA.js";
36
36
  import "../chunk-7QLSKOSU.js";
37
37
  import "../chunk-KZERVKTD.js";
38
- import "../chunk-KAVDAZ7A.js";
38
+ import "../chunk-L7NOG547.js";
39
39
  import "../chunk-2UMNXADU.js";
40
- import "../chunk-WDKHZRAS.js";
40
+ import "../chunk-MC5WUOJJ.js";
41
41
 
42
42
  // bin/pushary-session-end-hook.ts
43
43
  var main = async () => {
@@ -1,45 +1,45 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  reapplyClaudeForVersion
4
- } from "../chunk-Z2UWFEJW.js";
5
- import "../chunk-6AEM5RCS.js";
6
- import "../chunk-HGUZOUB2.js";
4
+ } from "../chunk-6W2WGNO5.js";
5
+ import "../chunk-USWT4PTR.js";
6
+ import "../chunk-CNUDZS4V.js";
7
7
  import {
8
8
  readHookInput
9
- } from "../chunk-OEKFD5BC.js";
10
- import "../chunk-4RF52LSU.js";
11
- import "../chunk-BMANRGJQ.js";
12
- import "../chunk-VOSGZ6PH.js";
13
- import "../chunk-2ZTL3PGN.js";
14
- import "../chunk-CUEZMPLJ.js";
15
- import "../chunk-HBHEX3JQ.js";
16
- import "../chunk-XLOELLAS.js";
17
- import "../chunk-2D7BAOMY.js";
9
+ } from "../chunk-IZVK6FKD.js";
10
+ import "../chunk-HAXZ6CBF.js";
11
+ import "../chunk-EMGGUO2Q.js";
12
+ import "../chunk-WPS5IM7B.js";
13
+ import "../chunk-XZWUOCJZ.js";
14
+ import "../chunk-QJPYJVL3.js";
15
+ import "../chunk-GQRU4KJF.js";
16
+ import "../chunk-VMZ4SWQD.js";
17
+ import "../chunk-7RNY3UHJ.js";
18
18
  import "../chunk-GOPIMNVC.js";
19
19
  import "../chunk-3AJIK5AO.js";
20
- import "../chunk-4PX4QK2Z.js";
20
+ import "../chunk-SKPXQRKN.js";
21
21
  import "../chunk-EQRS3SGM.js";
22
- import "../chunk-OI3DJA7N.js";
22
+ import "../chunk-VERXHIQF.js";
23
23
  import "../chunk-XHKBHWLX.js";
24
24
  import "../chunk-L4ZCFMWW.js";
25
25
  import {
26
26
  handleSessionStart
27
- } from "../chunk-HCMM3BOW.js";
27
+ } from "../chunk-XJQOVWBQ.js";
28
+ import "../chunk-Z4JVEL7R.js";
29
+ import "../chunk-XUTSZYYJ.js";
28
30
  import "../chunk-XS33QBJA.js";
29
- import "../chunk-BDI2MXTT.js";
30
- import "../chunk-IVQMNLSA.js";
31
- import "../chunk-N4VNLISN.js";
32
- import "../chunk-OW6AZDY2.js";
31
+ import "../chunk-4OSQZ5TB.js";
32
+ import "../chunk-BGX4QUQF.js";
33
33
  import "../chunk-GMXKITVA.js";
34
34
  import "../chunk-DINDL2CF.js";
35
- import "../chunk-S5CMLR35.js";
35
+ import "../chunk-VMQU7YEJ.js";
36
36
  import "../chunk-EYRGBYZG.js";
37
37
  import "../chunk-SAF6HGAA.js";
38
38
  import "../chunk-7QLSKOSU.js";
39
39
  import "../chunk-KZERVKTD.js";
40
- import "../chunk-KAVDAZ7A.js";
40
+ import "../chunk-L7NOG547.js";
41
41
  import "../chunk-2UMNXADU.js";
42
- import "../chunk-WDKHZRAS.js";
42
+ import "../chunk-MC5WUOJJ.js";
43
43
 
44
44
  // bin/pushary-session-start-hook.ts
45
45
  var main = async () => {
@@ -5,18 +5,19 @@ import {
5
5
  import {
6
6
  coworkOutput,
7
7
  coworkSelection
8
- } from "../chunk-WRDLHR2F.js";
8
+ } from "../chunk-UKMLSQXA.js";
9
9
  import "../chunk-PUZZELE6.js";
10
10
  import {
11
11
  detectClaudeVersion
12
- } from "../chunk-6AEM5RCS.js";
12
+ } from "../chunk-USWT4PTR.js";
13
13
  import {
14
14
  describeVersionManagerPin,
15
15
  versionManagerOf
16
16
  } from "../chunk-GU3EJCVV.js";
17
17
  import {
18
+ readManagedControlEvidence,
18
19
  waitForMachineReadiness
19
- } from "../chunk-32RMQO5Z.js";
20
+ } from "../chunk-WAUAYRUQ.js";
20
21
  import {
21
22
  HERMES_CONFIG_SCRIPT,
22
23
  HERMES_PIP_PACKAGE,
@@ -36,7 +37,7 @@ import {
36
37
  shortenHome,
37
38
  vscodeSettingsTargets,
38
39
  writeInstructionBlock
39
- } from "../chunk-6VANQN5Q.js";
40
+ } from "../chunk-NKUE5SJB.js";
40
41
  import {
41
42
  OPENCODE_HOOK_BINARY,
42
43
  addOpenCodeMcpServer,
@@ -47,7 +48,7 @@ import {
47
48
  openCodePluginDir,
48
49
  openCodePluginFile,
49
50
  openCodeWired
50
- } from "../chunk-HQIVR7MM.js";
51
+ } from "../chunk-U5RIXR7I.js";
51
52
  import {
52
53
  addClaudeMcpServer,
53
54
  addPusharyHooks,
@@ -55,12 +56,12 @@ import {
55
56
  captureClaudeMcpServer,
56
57
  isClaudeMcpSnapshot,
57
58
  updateClaudeMcpSnapshot
58
- } from "../chunk-HGUZOUB2.js";
59
+ } from "../chunk-CNUDZS4V.js";
59
60
  import {
60
61
  detectProviderLiveCapabilities,
61
62
  hasSpawnProvider,
62
63
  resolveControlPolicy
63
- } from "../chunk-IM2A5H33.js";
64
+ } from "../chunk-54W7ELDQ.js";
64
65
  import {
65
66
  KEEP_HINT,
66
67
  captureHookTakeover,
@@ -70,23 +71,23 @@ import {
70
71
  hookOwnerOf,
71
72
  mcpBearerKey,
72
73
  planHooks
73
- } from "../chunk-VOSGZ6PH.js";
74
+ } from "../chunk-WPS5IM7B.js";
74
75
  import {
75
76
  AGENT_CHOICES,
76
77
  effectiveControlMode,
77
78
  effectiveVerify,
78
79
  parseSetupOptions
79
- } from "../chunk-2ZTL3PGN.js";
80
+ } from "../chunk-XZWUOCJZ.js";
80
81
  import {
81
82
  liveBridgeProbe,
82
83
  resolveBridgeStub
83
- } from "../chunk-CUEZMPLJ.js";
84
+ } from "../chunk-QJPYJVL3.js";
84
85
  import {
85
86
  claudeWired,
86
87
  codexWired,
87
88
  geminiWired,
88
89
  pusharyHookExecutable
89
- } from "../chunk-HBHEX3JQ.js";
90
+ } from "../chunk-GQRU4KJF.js";
90
91
  import {
91
92
  clearDaemonNeedsLogin,
92
93
  daemonHasRemoteProof,
@@ -99,14 +100,14 @@ import {
99
100
  replaceDaemonService,
100
101
  stopDaemonService,
101
102
  waitForDaemonRemoteProof
102
- } from "../chunk-XLOELLAS.js";
103
+ } from "../chunk-VMZ4SWQD.js";
103
104
  import {
104
105
  GEMINI_HOOK_BINARY,
105
106
  addGeminiHooks,
106
107
  addGeminiMcpServer,
107
108
  compareVersion,
108
109
  parseVersion
109
- } from "../chunk-2D7BAOMY.js";
110
+ } from "../chunk-7RNY3UHJ.js";
110
111
  import "../chunk-GOPIMNVC.js";
111
112
  import {
112
113
  guardBinary,
@@ -115,7 +116,7 @@ import {
115
116
  } from "../chunk-3AJIK5AO.js";
116
117
  import {
117
118
  transcriptPreferenceForSetup
118
- } from "../chunk-OI3DJA7N.js";
119
+ } from "../chunk-VERXHIQF.js";
119
120
  import "../chunk-XHKBHWLX.js";
120
121
  import {
121
122
  installGlobally,
@@ -125,11 +126,11 @@ import {
125
126
  } from "../chunk-L4ZCFMWW.js";
126
127
  import {
127
128
  reportEvent
128
- } from "../chunk-HCMM3BOW.js";
129
+ } from "../chunk-XJQOVWBQ.js";
130
+ import "../chunk-Z4JVEL7R.js";
131
+ import "../chunk-XUTSZYYJ.js";
129
132
  import "../chunk-XS33QBJA.js";
130
- import "../chunk-BDI2MXTT.js";
131
- import "../chunk-IVQMNLSA.js";
132
- import "../chunk-N4VNLISN.js";
133
+ import "../chunk-4OSQZ5TB.js";
133
134
  import {
134
135
  addCodexHookTrust,
135
136
  addCodexHooks,
@@ -157,7 +158,7 @@ import {
157
158
  readCodexMcpAuth,
158
159
  vscodePluginDir,
159
160
  vscodePluginMcp
160
- } from "../chunk-OW6AZDY2.js";
161
+ } from "../chunk-BGX4QUQF.js";
161
162
  import {
162
163
  confirmAppConnection,
163
164
  connectDevice,
@@ -165,14 +166,15 @@ import {
165
166
  describeRoundTrip,
166
167
  pairingEscapeApplies,
167
168
  printConnectInstructions,
169
+ roundTripEvidence,
168
170
  verifyRoundTrip
169
- } from "../chunk-KI4PA7MQ.js";
171
+ } from "../chunk-XO3JR3OP.js";
170
172
  import "../chunk-3EGEA4KH.js";
171
173
  import {
172
174
  checkApiKey,
173
175
  describeKeyCheck,
174
176
  samePusharyAccount
175
- } from "../chunk-I6GZX3FT.js";
177
+ } from "../chunk-BQL7UDIB.js";
176
178
  import {
177
179
  setHumanStream
178
180
  } from "../chunk-QCGNGEGE.js";
@@ -181,7 +183,7 @@ import {
181
183
  } from "../chunk-5RUIFDTP.js";
182
184
  import {
183
185
  renderCommandHelp
184
- } from "../chunk-D6PRC3YQ.js";
186
+ } from "../chunk-LZQVAEWP.js";
185
187
  import "../chunk-GMXKITVA.js";
186
188
  import {
187
189
  getPackageVersion,
@@ -197,7 +199,7 @@ import {
197
199
  readKeySource,
198
200
  resolveShellRc,
199
201
  writeKey
200
- } from "../chunk-S5CMLR35.js";
202
+ } from "../chunk-VMQU7YEJ.js";
201
203
  import "../chunk-EYRGBYZG.js";
202
204
  import "../chunk-SAF6HGAA.js";
203
205
  import {
@@ -211,12 +213,12 @@ import {
211
213
  readJsonSafe,
212
214
  writeFileAtomic,
213
215
  writeJsonAtomic
214
- } from "../chunk-KAVDAZ7A.js";
216
+ } from "../chunk-L7NOG547.js";
215
217
  import "../chunk-2UMNXADU.js";
216
218
  import {
217
219
  HOOK_LOCATOR_BINARY,
218
220
  isValidApiKey
219
- } from "../chunk-WDKHZRAS.js";
221
+ } from "../chunk-MC5WUOJJ.js";
220
222
 
221
223
  // bin/pushary-setup.ts
222
224
  import { existsSync, readFileSync, writeFileSync, mkdirSync, cpSync, rmSync, renameSync, realpathSync, readdirSync, statSync, openSync, readSync, closeSync } from "fs";
@@ -254,7 +256,7 @@ var COMMAND_SURFACE = [
254
256
  var SURFACE_COLUMN = Math.max(...COMMAND_SURFACE.map((entry) => entry.command.length)) + 2;
255
257
  var renderCommandSurface = () => COMMAND_SURFACE.map((entry) => `${entry.command.padEnd(SURFACE_COLUMN)}${entry.summary}`);
256
258
  var nextSteps = (facts, reachable) => {
257
- const lines = [];
259
+ const lines = ["Delivery follows the current approval mode, recipient rules and presence. pushary mode status shows the workspace setting.", facts.managedControlReady === true ? "Phone-start and steering: local and server checks passed just now. Recheck after sleep or network changes." : "Phone-start and steering: unverified. Run pushary doctor to check the provider, background service and server route."];
258
260
  if (facts.staleEnvironmentKey) {
259
261
  lines.push("Open a new terminal or unset PUSHARY_API_KEY, then run pushary doctor before starting an agent.");
260
262
  }
@@ -266,7 +268,7 @@ var nextSteps = (facts, reachable) => {
266
268
  lines.push("pushary setup --transcripts off disable transcript sync on this machine");
267
269
  }
268
270
  if (facts.completed.includes("claude_code")) {
269
- lines.push("pushary claude run Claude Code so your phone can start and steer it");
271
+ lines.push("pushary claude launch a managed Claude Code session");
270
272
  }
271
273
  if (!reachable) {
272
274
  lines.push("pushary connect connect a phone without re-running setup");
@@ -310,7 +312,7 @@ var describeClosing = (facts) => {
310
312
  ok: false,
311
313
  headline: "Setup finished with 1 problem.",
312
314
  next: [
313
- "Approvals are configured, but this machine cannot start an agent from your phone.",
315
+ "Agent configuration and managed control are separate. Phone-start and steering could not be verified.",
314
316
  "pushary daemon install install or repair the background service",
315
317
  "pushary doctor verify it became reachable"
316
318
  ],
@@ -320,17 +322,17 @@ var describeClosing = (facts) => {
320
322
  if (facts.roundTripAnswered === true) {
321
323
  return {
322
324
  ok: true,
323
- headline: "Setup complete, and proven.",
324
- next: [...nextSteps(facts, true), "", `Approvals: ${ACTIVITY_URL}`],
325
+ headline: "Agents configured. Synthetic answer returned.",
326
+ next: ["Agent hook activation remains unverified.", ...nextSteps(facts, reachable), "", `Approvals: ${ACTIVITY_URL}`],
325
327
  exitCode: EXIT.OK
326
328
  };
327
329
  }
328
330
  if (facts.reachChecked && !facts.reachesYou) {
329
331
  return {
330
332
  ok: false,
331
- headline: "Agents configured. Your phone is not connected yet.",
333
+ headline: "Agents configured. Phone delivery is unverified.",
332
334
  next: [
333
- "Approvals fall back to the terminal until a device of yours can answer.",
335
+ "Approval routing depends on your mode, presence and recipients. Check the phone and its notification settings.",
334
336
  "",
335
337
  ...nextSteps(facts, false)
336
338
  ],
@@ -342,8 +344,7 @@ var describeClosing = (facts) => {
342
344
  ok: false,
343
345
  headline: "Agents configured. Nobody answered the test question.",
344
346
  next: [
345
- "The push reached a device and no answer came back, which is the failure that usually",
346
- "goes unnoticed: approvals will keep arriving and keep going unanswered.",
347
+ "No answer returned from the synthetic test. Delivery acceptance does not prove a visible notification.",
347
348
  "",
348
349
  "Check the notification opened something you could tap, then:",
349
350
  "pushary doctor --roundtrip send another one",
@@ -2148,7 +2149,7 @@ var main = async () => {
2148
2149
  // being a thing they have to know to run.
2149
2150
  (phone?.reachesYou || phone?.outcome?.kind === "unattributable")) {
2150
2151
  console.log();
2151
- console.log(` ${dim("One last check. Answering it is the proof.")}`);
2152
+ console.log(` ${dim("Test delivery and answer return. Agent hooks are a separate check.")}`);
2152
2153
  await spinner("Waiting for you to tap the notification", async () => {
2153
2154
  roundTrip = await verifyRoundTrip(trimmedKey);
2154
2155
  });
@@ -2204,9 +2205,10 @@ var main = async () => {
2204
2205
  const keyIsTrusted = keyCheck.kind === "ok";
2205
2206
  const managedControlAgents = ["claude_code", "codex", "gemini_cli"];
2206
2207
  const configuredControlAgents = managedControlAgents.filter((agent) => agentIsWired(agent));
2207
- const controlCapabilities = detectProviderLiveCapabilities(configuredControlAgents.map(
2208
+ const configuredControlProviders = configuredControlAgents.map(
2208
2209
  (agent) => agent === "claude_code" ? "claude" : agent === "gemini_cli" ? "gemini" : agent
2209
- ));
2210
+ );
2211
+ const controlCapabilities = detectProviderLiveCapabilities(configuredControlProviders);
2210
2212
  const providerAvailable = hasSpawnProvider(controlCapabilities);
2211
2213
  const managerAvailable = daemonServiceManagerAvailable();
2212
2214
  const servicePresent = readDaemonStatus().kind !== "absent" || hasDaemonServiceDefinition();
@@ -2247,7 +2249,7 @@ var main = async () => {
2247
2249
  if (!retired && stopped.kind === "ok") warnVersionManagerPin(process.execPath);
2248
2250
  }
2249
2251
  if (controlMode === "on" && controlPolicy !== "enabled") {
2250
- console.log(` ${yellow("!")} Phone-start was required, but this machine has no supported provider or native background-service manager.`);
2252
+ console.log(` ${yellow("!")} Phone-start was required: ${!providerAvailable ? "install a supported Claude Code, Codex or Gemini provider" : "no native background-service manager is available in this OS session"}.`);
2251
2253
  } else if (controlPolicy === "legacy") {
2252
2254
  console.log(` ${yellow("!")} A legacy phone-start service cannot be safely adopted in this session. Disable it with --control off or restore its provider and native service manager.`);
2253
2255
  }
@@ -2270,6 +2272,7 @@ var main = async () => {
2270
2272
  } else if (serverControlProof && serverControlProof.kind !== "ready") {
2271
2273
  console.log(` ${yellow("!")} Managed control could not be verified by the server: ${serverControlProof.detail}`);
2272
2274
  }
2275
+ const managedControl = readManagedControlEvidence(trimmedKey, configuredControlProviders, controlLifecycleFailure ? null : serverControlProof);
2273
2276
  const closing = describeClosing({
2274
2277
  staleEnvironmentKey,
2275
2278
  agentsOk,
@@ -2278,6 +2281,7 @@ var main = async () => {
2278
2281
  failed,
2279
2282
  reachChecked,
2280
2283
  reachesYou,
2284
+ managedControlReady: !controlLifecycleFailure && managedControl.ready,
2281
2285
  daemonReady: controlLifecycleFailure ? false : daemonReady,
2282
2286
  transcriptSync,
2283
2287
  // null when the check did not run, so it changes nothing. Only an outright
@@ -2325,12 +2329,15 @@ var main = async () => {
2325
2329
  // "a person answered" without inferring it. 'skipped' means the check did
2326
2330
  // not run, never that it failed.
2327
2331
  roundTrip: roundTrip === null ? "skipped" : roundTrip.kind,
2332
+ roundTripEvidence: roundTripEvidence(roundTrip),
2333
+ hookActivation: "unverified",
2328
2334
  rc: rc.kind,
2329
2335
  rcPath: rc.path,
2330
2336
  daemon: controlLifecycleFailure ? "unavailable" : daemon?.kind ?? "skipped",
2331
2337
  control: controlMode,
2332
2338
  controlPolicy,
2333
2339
  controlCapabilities,
2340
+ managedControl,
2334
2341
  exitCode
2335
2342
  });
2336
2343
  if (exitCode !== EXIT.OK) {
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readLedgerSummary
4
- } from "../chunk-UCS65VVR.js";
4
+ } from "../chunk-5GKNAQTG.js";
5
5
  import {
6
6
  exitOnHelpFlag
7
- } from "../chunk-DLLAWCQB.js";
8
- import "../chunk-D6PRC3YQ.js";
7
+ } from "../chunk-GOQHN2UH.js";
8
+ import "../chunk-LZQVAEWP.js";
9
9
  import "../chunk-DINDL2CF.js";
10
10
  import "../chunk-KZERVKTD.js";
11
11
  import {
12
12
  getApiKey
13
13
  } from "../chunk-2UMNXADU.js";
14
- import "../chunk-WDKHZRAS.js";
14
+ import "../chunk-MC5WUOJJ.js";
15
15
 
16
16
  // bin/pushary-stats.ts
17
17
  exitOnHelpFlag("stats");
@@ -2,34 +2,38 @@
2
2
  import {
3
3
  describeLastSeen,
4
4
  listMachines
5
- } from "../chunk-32RMQO5Z.js";
6
- import "../chunk-N4VNLISN.js";
7
- import "../chunk-OW6AZDY2.js";
5
+ } from "../chunk-WAUAYRUQ.js";
6
+ import "../chunk-54W7ELDQ.js";
7
+ import "../chunk-VMZ4SWQD.js";
8
+ import "../chunk-XHKBHWLX.js";
9
+ import "../chunk-L4ZCFMWW.js";
10
+ import "../chunk-4OSQZ5TB.js";
11
+ import "../chunk-BGX4QUQF.js";
8
12
  import {
9
13
  describeReach,
10
14
  fetchChannels,
11
15
  reachVerdict
12
- } from "../chunk-KI4PA7MQ.js";
16
+ } from "../chunk-XO3JR3OP.js";
13
17
  import "../chunk-3EGEA4KH.js";
14
18
  import {
15
19
  checkApiKey,
16
20
  describeKeyCheck
17
- } from "../chunk-I6GZX3FT.js";
21
+ } from "../chunk-BQL7UDIB.js";
18
22
  import "../chunk-QCGNGEGE.js";
19
23
  import {
20
24
  createIo
21
25
  } from "../chunk-5RUIFDTP.js";
22
26
  import {
23
27
  exitOnHelpFlag
24
- } from "../chunk-DLLAWCQB.js";
25
- import "../chunk-D6PRC3YQ.js";
28
+ } from "../chunk-GOQHN2UH.js";
29
+ import "../chunk-LZQVAEWP.js";
26
30
  import {
27
31
  rejectUnknownFlags
28
32
  } from "../chunk-GMXKITVA.js";
29
33
  import "../chunk-DINDL2CF.js";
30
34
  import {
31
35
  readKeySource
32
- } from "../chunk-S5CMLR35.js";
36
+ } from "../chunk-VMQU7YEJ.js";
33
37
  import "../chunk-EYRGBYZG.js";
34
38
  import "../chunk-SAF6HGAA.js";
35
39
  import {
@@ -38,9 +42,9 @@ import {
38
42
  import {
39
43
  EXIT
40
44
  } from "../chunk-KZERVKTD.js";
41
- import "../chunk-KAVDAZ7A.js";
45
+ import "../chunk-L7NOG547.js";
42
46
  import "../chunk-2UMNXADU.js";
43
- import "../chunk-WDKHZRAS.js";
47
+ import "../chunk-MC5WUOJJ.js";
44
48
 
45
49
  // src/status.ts
46
50
  var keySourceLine = (source) => {
@@ -1,42 +1,42 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-OEKFD5BC.js";
5
- import "../chunk-4RF52LSU.js";
6
- import "../chunk-BMANRGJQ.js";
7
- import "../chunk-VOSGZ6PH.js";
8
- import "../chunk-2ZTL3PGN.js";
9
- import "../chunk-CUEZMPLJ.js";
10
- import "../chunk-HBHEX3JQ.js";
11
- import "../chunk-XLOELLAS.js";
12
- import "../chunk-2D7BAOMY.js";
4
+ } from "../chunk-IZVK6FKD.js";
5
+ import "../chunk-HAXZ6CBF.js";
6
+ import "../chunk-EMGGUO2Q.js";
7
+ import "../chunk-WPS5IM7B.js";
8
+ import "../chunk-XZWUOCJZ.js";
9
+ import "../chunk-QJPYJVL3.js";
10
+ import "../chunk-GQRU4KJF.js";
11
+ import "../chunk-VMZ4SWQD.js";
12
+ import "../chunk-7RNY3UHJ.js";
13
13
  import "../chunk-GOPIMNVC.js";
14
14
  import "../chunk-3AJIK5AO.js";
15
- import "../chunk-4PX4QK2Z.js";
15
+ import "../chunk-SKPXQRKN.js";
16
16
  import "../chunk-EQRS3SGM.js";
17
- import "../chunk-OI3DJA7N.js";
17
+ import "../chunk-VERXHIQF.js";
18
18
  import "../chunk-XHKBHWLX.js";
19
19
  import "../chunk-L4ZCFMWW.js";
20
20
  import {
21
21
  handleStop,
22
22
  handleSubagentStop,
23
23
  isSubagentStop
24
- } from "../chunk-HCMM3BOW.js";
24
+ } from "../chunk-XJQOVWBQ.js";
25
+ import "../chunk-Z4JVEL7R.js";
26
+ import "../chunk-XUTSZYYJ.js";
25
27
  import "../chunk-XS33QBJA.js";
26
- import "../chunk-BDI2MXTT.js";
27
- import "../chunk-IVQMNLSA.js";
28
- import "../chunk-N4VNLISN.js";
29
- import "../chunk-OW6AZDY2.js";
28
+ import "../chunk-4OSQZ5TB.js";
29
+ import "../chunk-BGX4QUQF.js";
30
30
  import "../chunk-GMXKITVA.js";
31
31
  import "../chunk-DINDL2CF.js";
32
- import "../chunk-S5CMLR35.js";
32
+ import "../chunk-VMQU7YEJ.js";
33
33
  import "../chunk-EYRGBYZG.js";
34
34
  import "../chunk-SAF6HGAA.js";
35
35
  import "../chunk-7QLSKOSU.js";
36
36
  import "../chunk-KZERVKTD.js";
37
- import "../chunk-KAVDAZ7A.js";
37
+ import "../chunk-L7NOG547.js";
38
38
  import "../chunk-2UMNXADU.js";
39
- import "../chunk-WDKHZRAS.js";
39
+ import "../chunk-MC5WUOJJ.js";
40
40
 
41
41
  // bin/pushary-stop-hook.ts
42
42
  var main = async () => {
@@ -1,40 +1,40 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-OEKFD5BC.js";
5
- import "../chunk-4RF52LSU.js";
6
- import "../chunk-BMANRGJQ.js";
7
- import "../chunk-VOSGZ6PH.js";
8
- import "../chunk-2ZTL3PGN.js";
9
- import "../chunk-CUEZMPLJ.js";
10
- import "../chunk-HBHEX3JQ.js";
11
- import "../chunk-XLOELLAS.js";
12
- import "../chunk-2D7BAOMY.js";
4
+ } from "../chunk-IZVK6FKD.js";
5
+ import "../chunk-HAXZ6CBF.js";
6
+ import "../chunk-EMGGUO2Q.js";
7
+ import "../chunk-WPS5IM7B.js";
8
+ import "../chunk-XZWUOCJZ.js";
9
+ import "../chunk-QJPYJVL3.js";
10
+ import "../chunk-GQRU4KJF.js";
11
+ import "../chunk-VMZ4SWQD.js";
12
+ import "../chunk-7RNY3UHJ.js";
13
13
  import "../chunk-GOPIMNVC.js";
14
14
  import "../chunk-3AJIK5AO.js";
15
- import "../chunk-4PX4QK2Z.js";
15
+ import "../chunk-SKPXQRKN.js";
16
16
  import "../chunk-EQRS3SGM.js";
17
- import "../chunk-OI3DJA7N.js";
17
+ import "../chunk-VERXHIQF.js";
18
18
  import "../chunk-XHKBHWLX.js";
19
19
  import "../chunk-L4ZCFMWW.js";
20
20
  import {
21
21
  handleStopFailure
22
- } from "../chunk-HCMM3BOW.js";
22
+ } from "../chunk-XJQOVWBQ.js";
23
+ import "../chunk-Z4JVEL7R.js";
24
+ import "../chunk-XUTSZYYJ.js";
23
25
  import "../chunk-XS33QBJA.js";
24
- import "../chunk-BDI2MXTT.js";
25
- import "../chunk-IVQMNLSA.js";
26
- import "../chunk-N4VNLISN.js";
27
- import "../chunk-OW6AZDY2.js";
26
+ import "../chunk-4OSQZ5TB.js";
27
+ import "../chunk-BGX4QUQF.js";
28
28
  import "../chunk-GMXKITVA.js";
29
29
  import "../chunk-DINDL2CF.js";
30
- import "../chunk-S5CMLR35.js";
30
+ import "../chunk-VMQU7YEJ.js";
31
31
  import "../chunk-EYRGBYZG.js";
32
32
  import "../chunk-SAF6HGAA.js";
33
33
  import "../chunk-7QLSKOSU.js";
34
34
  import "../chunk-KZERVKTD.js";
35
- import "../chunk-KAVDAZ7A.js";
35
+ import "../chunk-L7NOG547.js";
36
36
  import "../chunk-2UMNXADU.js";
37
- import "../chunk-WDKHZRAS.js";
37
+ import "../chunk-MC5WUOJJ.js";
38
38
 
39
39
  // bin/pushary-stopfailure-hook.ts
40
40
  var main = async () => {
@@ -4,8 +4,8 @@ import {
4
4
  } from "../chunk-5RUIFDTP.js";
5
5
  import {
6
6
  exitOnHelpFlag
7
- } from "../chunk-DLLAWCQB.js";
8
- import "../chunk-D6PRC3YQ.js";
7
+ } from "../chunk-GOQHN2UH.js";
8
+ import "../chunk-LZQVAEWP.js";
9
9
  import {
10
10
  rejectUnknownFlags
11
11
  } from "../chunk-GMXKITVA.js";