@pushary/agent-hooks 1.9.49 → 1.9.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.50
4
+
5
+ - Setup no longer reports a problem when it tried to install phone-start on its own and the background service did not start. The run closes on what the approval check found, and the closing notes say phone-start is not running. `--control on` still fails the run when phone-start cannot be made ready.
6
+
3
7
  ## 1.9.49
4
8
 
5
9
  - A program at a nested path under a system folder, such as `/opt/homebrew/bin/tools/cat` or `/usr/local/bin/x/zsh`, is no longer treated as the system tool of the same name. It asks a person where it used to run as a read, and `pushary codex` no longer reads a script out of a shell at such a path. Programs directly inside `/bin`, `/usr/bin`, `/usr/local/bin` and `/opt/homebrew/bin` are judged as before. The `pushary codex` half needs the matching server.
@@ -9,7 +9,7 @@ import {
9
9
  import "../chunk-BXK6ZJVJ.js";
10
10
  import {
11
11
  resolveProviderBinary
12
- } from "../chunk-OWQHE2VV.js";
12
+ } from "../chunk-GBKSCDEK.js";
13
13
  import "../chunk-RIVNNBEK.js";
14
14
  import {
15
15
  withSpawnProcessOwnership
@@ -16,7 +16,7 @@ import {
16
16
  import "../chunk-BXK6ZJVJ.js";
17
17
  import {
18
18
  resolveProviderBinary
19
- } from "../chunk-OWQHE2VV.js";
19
+ } from "../chunk-GBKSCDEK.js";
20
20
  import "../chunk-RIVNNBEK.js";
21
21
  import "../chunk-FPKQGWAF.js";
22
22
  import "../chunk-XNZB274I.js";
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  HEARTBEAT_INTERVAL_MS,
7
7
  sendHeartbeat
8
- } from "../chunk-QYBL4EHD.js";
8
+ } from "../chunk-GTGXQ7FJ.js";
9
9
  import "../chunk-KIO2MZQC.js";
10
10
  import {
11
11
  writeHuman
@@ -59,7 +59,7 @@ import {
59
59
  launchableProviders,
60
60
  resolveControlPolicy,
61
61
  trackProviderInventory
62
- } from "../chunk-OWQHE2VV.js";
62
+ } from "../chunk-GBKSCDEK.js";
63
63
  import "../chunk-RIVNNBEK.js";
64
64
  import {
65
65
  SESSION_REAP_SILENCE_MS,
@@ -26,7 +26,7 @@ import "../chunk-3EGEA4KH.js";
26
26
  import {
27
27
  readMachineReadiness,
28
28
  readManagedControlEvidence
29
- } from "../chunk-QYBL4EHD.js";
29
+ } from "../chunk-GTGXQ7FJ.js";
30
30
  import {
31
31
  assessCodexHookTrust,
32
32
  readCodexTrustForPusharyHooks
@@ -148,7 +148,7 @@ import {
148
148
  expectedLaunchCapabilities,
149
149
  hasSpawnProvider,
150
150
  resolveControlPolicy
151
- } from "../chunk-OWQHE2VV.js";
151
+ } from "../chunk-GBKSCDEK.js";
152
152
  import "../chunk-RIVNNBEK.js";
153
153
  import "../chunk-XHKBHWLX.js";
154
154
  import "../chunk-6ICPEJY5.js";
@@ -12,7 +12,7 @@ import {
12
12
  } from "../chunk-BXK6ZJVJ.js";
13
13
  import {
14
14
  resolveProviderBinary
15
- } from "../chunk-OWQHE2VV.js";
15
+ } from "../chunk-GBKSCDEK.js";
16
16
  import "../chunk-RIVNNBEK.js";
17
17
  import {
18
18
  SESSION_IDLE_TIMEOUT_MS,
@@ -44,7 +44,7 @@ import "../chunk-3EGEA4KH.js";
44
44
  import {
45
45
  readManagedControlEvidence,
46
46
  waitForMachineReadiness
47
- } from "../chunk-QYBL4EHD.js";
47
+ } from "../chunk-GTGXQ7FJ.js";
48
48
  import {
49
49
  ensureCodexTrustsPusharyHooks
50
50
  } from "../chunk-KIO2MZQC.js";
@@ -220,8 +220,9 @@ import {
220
220
  hasSpawnProvider,
221
221
  missingControlPrerequisite,
222
222
  nodeCodexInstallProbe,
223
+ phoneStartIsRequired,
223
224
  resolveControlPolicy
224
- } from "../chunk-OWQHE2VV.js";
225
+ } from "../chunk-GBKSCDEK.js";
225
226
  import {
226
227
  detectClaudeVersion
227
228
  } from "../chunk-RIVNNBEK.js";
@@ -693,6 +694,15 @@ var COMMAND_SURFACE = [
693
694
  ];
694
695
  var SURFACE_COLUMN = Math.max(...COMMAND_SURFACE.map((entry) => entry.command.length)) + 2;
695
696
  var renderCommandSurface = () => COMMAND_SURFACE.map((entry) => `${entry.command.padEnd(SURFACE_COLUMN)}${entry.summary}`);
697
+ var PHONE_START_VERIFIED_LINE = "Phone-start and steering: local and server checks passed just now. Recheck after sleep or network changes.";
698
+ var PHONE_START_NOT_RUNNING_LINE = "Phone-start and steering: not running on this computer. Approvals do not depend on it. Run pushary doctor to see what is missing.";
699
+ var PHONE_START_UNVERIFIED_LINE = "Phone-start and steering: unverified. Run pushary doctor to check the provider, background service and server route.";
700
+ var phoneStartStatusLine = (facts) => {
701
+ if (facts.managedControlReady === true) return PHONE_START_VERIFIED_LINE;
702
+ if (facts.daemonReady === false) return PHONE_START_NOT_RUNNING_LINE;
703
+ return PHONE_START_UNVERIFIED_LINE;
704
+ };
705
+ var phoneStartFailedTheRun = (facts) => facts.daemonReady === false && facts.phoneStartRequired !== false;
696
706
  var PHONE_START_UNVERIFIED_STEPS = [
697
707
  "Agent configuration and managed control are separate. Phone-start and steering could not be verified.",
698
708
  "pushary daemon install install or repair the background service",
@@ -712,7 +722,7 @@ var WHAT_PHONE_START_NEEDS = {
712
722
  };
713
723
  var phoneStartProblemSteps = (missing) => missing ? [PHONE_START_CANNOT_RUN_LINE, ...WHAT_PHONE_START_NEEDS[missing], STOP_REQUIRING_PHONE_START_STEP] : PHONE_START_UNVERIFIED_STEPS;
714
724
  var nextSteps = (facts, reachable) => {
715
- 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."];
725
+ const lines = ["Delivery follows the current approval mode, recipient rules and presence. pushary mode status shows the workspace setting.", phoneStartStatusLine(facts)];
716
726
  lines.push("Before stepping away, run pushary wait to see how long phone approvals wait and what happens if you do not answer.");
717
727
  if (facts.staleEnvironmentKey) {
718
728
  lines.push("Open a new terminal or unset PUSHARY_API_KEY, then run pushary doctor before starting an agent.");
@@ -767,7 +777,7 @@ var describeClosing = (facts) => {
767
777
  reason: "stale-environment-key"
768
778
  };
769
779
  }
770
- if (facts.daemonReady === false) {
780
+ if (phoneStartFailedTheRun(facts)) {
771
781
  return {
772
782
  ok: false,
773
783
  headline: "Setup finished with 1 problem.",
@@ -3084,6 +3094,7 @@ var main = async () => {
3084
3094
  reachesYou,
3085
3095
  managedControlReady: !controlLifecycleFailure && managedControl.ready,
3086
3096
  daemonReady: controlLifecycleFailure ? false : daemonReady,
3097
+ phoneStartRequired: phoneStartIsRequired({ mode: controlMode, policy: controlPolicy, lifecycleFailed: controlLifecycleFailure !== null }),
3087
3098
  phoneStartMissingPrerequisite: controlMissingPrerequisite,
3088
3099
  transcriptSync,
3089
3100
  // null when the check did not run, so it changes nothing. Only an outright
@@ -8,7 +8,7 @@ import "../chunk-3EGEA4KH.js";
8
8
  import {
9
9
  describeLastSeen,
10
10
  listMachines
11
- } from "../chunk-QYBL4EHD.js";
11
+ } from "../chunk-GTGXQ7FJ.js";
12
12
  import "../chunk-QCGNGEGE.js";
13
13
  import {
14
14
  CONNECTED_THROUGH_MAC_APP,
@@ -39,7 +39,7 @@ import {
39
39
  import {
40
40
  exitOnHelpFlag
41
41
  } from "../chunk-BOVSUH4N.js";
42
- import "../chunk-OWQHE2VV.js";
42
+ import "../chunk-GBKSCDEK.js";
43
43
  import "../chunk-RIVNNBEK.js";
44
44
  import "../chunk-XHKBHWLX.js";
45
45
  import "../chunk-6ICPEJY5.js";
@@ -22,7 +22,7 @@ import {
22
22
  } from "../chunk-HXRH7ZCK.js";
23
23
  import {
24
24
  waitForMachineReadiness
25
- } from "../chunk-QYBL4EHD.js";
25
+ } from "../chunk-GTGXQ7FJ.js";
26
26
  import "../chunk-KIO2MZQC.js";
27
27
  import {
28
28
  readMacAppAgentKey
@@ -68,7 +68,7 @@ import {
68
68
  expectedLaunchCapabilities,
69
69
  hasSpawnProvider,
70
70
  resolveControlPolicy
71
- } from "../chunk-OWQHE2VV.js";
71
+ } from "../chunk-GBKSCDEK.js";
72
72
  import "../chunk-RIVNNBEK.js";
73
73
  import "../chunk-XHKBHWLX.js";
74
74
  import "../chunk-6ICPEJY5.js";
@@ -123,6 +123,7 @@ var missingControlPrerequisite = (input) => {
123
123
  if (!input.managerAvailable) return "service-manager";
124
124
  return null;
125
125
  };
126
+ var phoneStartIsRequired = (input) => input.mode === "on" || input.policy === "legacy" || input.lifecycleFailed;
126
127
  var preferGlobalProviderBinary = (platform) => platform === "win32";
127
128
  var resolveProviderBinary = (provider, platform = process.platform) => preferGlobalProviderBinary(platform) ? resolveGlobalBinary(provider) ?? resolvePathBinary(provider, platform) : resolvePathBinary(provider, platform) ?? resolveGlobalBinary(provider);
128
129
  var codexBinaryIsBroken = (binary) => codexInstallHealthAt(binary).kind === "binary-missing";
@@ -195,6 +196,7 @@ export {
195
196
  hasSpawnProvider,
196
197
  resolveControlPolicy,
197
198
  missingControlPrerequisite,
199
+ phoneStartIsRequired,
198
200
  resolveProviderBinary,
199
201
  codexBinaryIsBroken,
200
202
  detectProviderLiveCapabilities,
@@ -14,7 +14,7 @@ import {
14
14
  expectedLaunchCapabilities,
15
15
  hasSpawnProvider,
16
16
  resolveControlPolicy
17
- } from "./chunk-OWQHE2VV.js";
17
+ } from "./chunk-GBKSCDEK.js";
18
18
  import {
19
19
  getMachineId
20
20
  } from "./chunk-LY3OJFBW.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushary/agent-hooks",
3
- "version": "1.9.49",
3
+ "version": "1.9.50",
4
4
  "description": "Permission hooks for AI coding agents: route tool approvals through Pushary push notifications",
5
5
  "keywords": [
6
6
  "pushary",