@pushary/agent-hooks 1.9.65 → 1.9.67

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 (129) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/data/SKILL.md +1 -1
  3. package/data/cursor-plugin/skills/pushary/SKILL.md +1 -1
  4. package/data/vscode-plugin/skills/pushary/SKILL.md +1 -1
  5. package/dist/{api-32B3XLJR.js → api-3WIPD5GC.js} +12 -10
  6. package/dist/bin/pushary-bell-hook.js +25 -27
  7. package/dist/bin/pushary-bell.js +10 -10
  8. package/dist/bin/pushary-claude.js +26 -28
  9. package/dist/bin/pushary-clean.js +74 -77
  10. package/dist/bin/pushary-codex-bridge.js +21 -22
  11. package/dist/bin/pushary-codex-hook.js +30 -32
  12. package/dist/bin/pushary-codex-session.js +8 -8
  13. package/dist/bin/pushary-codex.js +13 -13
  14. package/dist/bin/pushary-connect.js +28 -28
  15. package/dist/bin/pushary-cowork.js +5 -5
  16. package/dist/bin/pushary-daemon.js +40 -41
  17. package/dist/bin/pushary-disconnect.js +25 -26
  18. package/dist/bin/pushary-doctor.js +118 -76
  19. package/dist/bin/pushary-elicitation-hook.js +25 -27
  20. package/dist/bin/pushary-gemini-bridge.js +15 -16
  21. package/dist/bin/pushary-gemini-hook.js +27 -29
  22. package/dist/bin/pushary-hook.js +29 -31
  23. package/dist/bin/pushary-login.js +20 -19
  24. package/dist/bin/pushary-logout.js +26 -28
  25. package/dist/bin/pushary-mcp.js +11 -11
  26. package/dist/bin/pushary-mode.js +16 -15
  27. package/dist/bin/pushary-notification-hook.js +24 -26
  28. package/dist/bin/pushary-opencode-hook.js +26 -28
  29. package/dist/bin/pushary-permission-denied-hook.js +29 -31
  30. package/dist/bin/pushary-permission-hook.js +32 -31
  31. package/dist/bin/pushary-post-hook.js +24 -26
  32. package/dist/bin/pushary-prompt-hook.js +24 -26
  33. package/dist/bin/pushary-session-end-hook.js +26 -28
  34. package/dist/bin/pushary-session-start-hook.js +34 -35
  35. package/dist/bin/pushary-setup.js +111 -99
  36. package/dist/bin/pushary-stats.js +5 -5
  37. package/dist/bin/pushary-status.js +37 -36
  38. package/dist/bin/pushary-stop-hook.js +24 -26
  39. package/dist/bin/pushary-stopfailure-hook.js +24 -26
  40. package/dist/bin/pushary-suggestions.js +15 -14
  41. package/dist/bin/pushary-transcript-register.js +16 -18
  42. package/dist/bin/pushary-transcripts.js +18 -17
  43. package/dist/bin/pushary-upgrade.js +45 -39
  44. package/dist/bin/pushary-wait.js +26 -20
  45. package/dist/bin/pushary.js +7 -7
  46. package/dist/{chunk-Y64JGYTB.js → chunk-32OSSYGZ.js} +1 -1
  47. package/dist/{chunk-UHS5MMAI.js → chunk-3THDNNVL.js} +3 -3
  48. package/dist/{chunk-OA6EADFT.js → chunk-564IPPBL.js} +3 -3
  49. package/dist/chunk-5MOJCOCF.js +25 -0
  50. package/dist/{chunk-RRHHWYPX.js → chunk-6H4E5UBA.js} +6 -6
  51. package/dist/{chunk-UM2X7HL6.js → chunk-6LXXKMV6.js} +42 -16
  52. package/dist/chunk-76SWHCAR.js +299 -0
  53. package/dist/{chunk-AN7C3CHH.js → chunk-77L2TNJW.js} +1 -1
  54. package/dist/{chunk-XJIIU36L.js → chunk-7YJSDXLM.js} +1 -1
  55. package/dist/{chunk-XZCJC3QO.js → chunk-B3V2WOJX.js} +285 -50
  56. package/dist/{chunk-RABLE5R6.js → chunk-BBFGDYYI.js} +1 -1
  57. package/dist/{chunk-GTBWWCCM.js → chunk-BFF3ABFV.js} +115 -9
  58. package/dist/{chunk-NOH3EJFH.js → chunk-C4EDAHXI.js} +1 -1
  59. package/dist/{chunk-ITYKN2K3.js → chunk-CHYBOTQN.js} +2 -2
  60. package/dist/{chunk-FFSIYBBU.js → chunk-CJZLIAJF.js} +27 -10
  61. package/dist/{chunk-UMTMFDL2.js → chunk-CPLQ5OHX.js} +1 -1
  62. package/dist/{chunk-DTVHZDYM.js → chunk-D3U6CN7T.js} +26 -12
  63. package/dist/{chunk-ICFHMJTW.js → chunk-D7Z4USSB.js} +27 -8
  64. package/dist/{chunk-DXMUJTYF.js → chunk-DP6LU6BB.js} +2 -2
  65. package/dist/{chunk-GA257T2E.js → chunk-DXCHIKAN.js} +8 -8
  66. package/dist/{chunk-PP7FC3Y7.js → chunk-EQR6JSFE.js} +9 -7
  67. package/dist/{chunk-Z3M627TQ.js → chunk-FONWVVDD.js} +1 -1
  68. package/dist/{chunk-3KXBRSL3.js → chunk-GMHQYX3D.js} +1 -1
  69. package/dist/{chunk-WY6YAMZW.js → chunk-ICQCQAUO.js} +5 -4
  70. package/dist/{chunk-CZ65D6Q5.js → chunk-IPG3RS23.js} +2 -2
  71. package/dist/{chunk-JCWHOB36.js → chunk-IRV2MNMA.js} +53 -3
  72. package/dist/{chunk-HIYLAC3C.js → chunk-IVB5O6NY.js} +3 -3
  73. package/dist/{chunk-DM24VZOI.js → chunk-IXTVUINH.js} +3 -3
  74. package/dist/{chunk-BEQ3MEE3.js → chunk-JBRMIADM.js} +2 -2
  75. package/dist/{chunk-CU2PXLZ6.js → chunk-JHB5SR5B.js} +4 -4
  76. package/dist/{chunk-ED2SWTPC.js → chunk-JOBSKQ2Z.js} +4 -4
  77. package/dist/{chunk-W5L2ZLHE.js → chunk-JOD2325S.js} +3 -3
  78. package/dist/{chunk-CSKABVSH.js → chunk-JSPCGPSH.js} +3 -3
  79. package/dist/{chunk-R4FL5JHK.js → chunk-KE4TSJUD.js} +4 -4
  80. package/dist/{chunk-3LF7T3NW.js → chunk-KIXRHNCW.js} +6 -6
  81. package/dist/{chunk-BKCI53W6.js → chunk-KNUYUQBP.js} +4 -4
  82. package/dist/{chunk-4LUWNBGD.js → chunk-KTLE7NIK.js} +23 -8
  83. package/dist/{chunk-ADXHPGBZ.js → chunk-LJHDUKBB.js} +6 -6
  84. package/dist/{chunk-U2P2LQ5B.js → chunk-LS42NV6E.js} +15 -6
  85. package/dist/{chunk-QNZ6G3LY.js → chunk-LYTWK5TF.js} +5 -5
  86. package/dist/{chunk-2VADJ6JH.js → chunk-METUT7V4.js} +2 -2
  87. package/dist/{chunk-P5HZEGT7.js → chunk-NSS2AIGI.js} +6 -6
  88. package/dist/{chunk-QSW3HAKI.js → chunk-NWN6GGJL.js} +61 -2
  89. package/dist/{chunk-7ILQX47W.js → chunk-P4RXSZDT.js} +3 -3
  90. package/dist/{chunk-FWS2KLV2.js → chunk-PIBWX3EF.js} +2 -2
  91. package/dist/{chunk-F56GTJFG.js → chunk-PO2P3XDC.js} +5 -5
  92. package/dist/{chunk-EEVE7H5Z.js → chunk-R2BZH2NK.js} +4 -4
  93. package/dist/{chunk-I2UBF2SS.js → chunk-RO2B4YBF.js} +1 -1
  94. package/dist/{chunk-MNKIR2ZB.js → chunk-RQOT6QL3.js} +67 -6
  95. package/dist/{chunk-Q2BD4IBX.js → chunk-SB6TYV4M.js} +11 -13
  96. package/dist/{chunk-ATPJGHUP.js → chunk-TI4JYPGQ.js} +7 -3
  97. package/dist/{chunk-LMC5UPL7.js → chunk-UC2J5RR4.js} +1 -1
  98. package/dist/{chunk-IZVEBBDH.js → chunk-UQIPWXBL.js} +3 -3
  99. package/dist/{chunk-VHKK3US3.js → chunk-UXN73YAE.js} +3 -3
  100. package/dist/{chunk-WOHP7EL6.js → chunk-VEYFXRZ6.js} +7 -6
  101. package/dist/{chunk-2Z7I7DHT.js → chunk-VHMZPN3N.js} +1 -1
  102. package/dist/{chunk-HVOQUPSO.js → chunk-VKZ3RJ5U.js} +1 -1
  103. package/dist/chunk-VVIQWGS7.js +2298 -0
  104. package/dist/{chunk-SCMEVDAR.js → chunk-WJLHZ6E6.js} +3 -3
  105. package/dist/{chunk-BAGBCSXA.js → chunk-X2MTVD4W.js} +1 -1
  106. package/dist/{chunk-3UNAPXED.js → chunk-XFDWLDHG.js} +9 -9
  107. package/dist/{chunk-6CZX6YOE.js → chunk-XNUWKKGS.js} +3 -3
  108. package/dist/{chunk-NUEPJ5W6.js → chunk-XZKSUJ55.js} +3 -5
  109. package/dist/{chunk-HDGB6SQ4.js → chunk-Y4MRHAE5.js} +2 -2
  110. package/dist/{chunk-SZBMTOUZ.js → chunk-Y6ZN454E.js} +1 -1
  111. package/dist/{chunk-TK4JU2F7.js → chunk-YSD4SMHE.js} +1 -1
  112. package/dist/{chunk-SROWUG5W.js → chunk-ZK5WYAMI.js} +1 -1
  113. package/dist/{chunk-JFKMPLNF.js → chunk-ZPIYJLQ3.js} +2 -2
  114. package/dist/{codex-app-cards-switch-HK4RMOBI.js → codex-app-cards-switch-25TDTMUZ.js} +11 -11
  115. package/dist/{codex-desktop-launch-OCO6N7SA.js → codex-desktop-launch-JDKUCD2Y.js} +1 -1
  116. package/dist/{codex-session-launch-ETZQTVFS.js → codex-session-launch-6N35AAEO.js} +18 -19
  117. package/dist/{config-YY54G3CC.js → config-OBGYURFX.js} +3 -3
  118. package/dist/{global-upgrade-5DN5G3ZQ.js → global-upgrade-2QNQD5OM.js} +10 -10
  119. package/dist/{identity-EGL6HAWG.js → identity-CUPX2U7Q.js} +4 -4
  120. package/dist/{live-capabilities-WU3FYJJG.js → live-capabilities-CUEIWMSM.js} +5 -5
  121. package/dist/{paths-ZG6KDM6Y.js → paths-BHLBZ6FY.js} +7 -3
  122. package/dist/{reapply-AQLNCCTE.js → reapply-4GXLWZ5M.js} +27 -27
  123. package/dist/src/index.js +30 -20
  124. package/dist/{upgrade-lock-BIRXIKHJ.js → upgrade-lock-RDKTAHWR.js} +4 -4
  125. package/dist/{usage-43C2DHDU.js → usage-KX2HN47E.js} +3 -3
  126. package/package.json +1 -1
  127. package/dist/chunk-ANP3DIST.js +0 -118
  128. package/dist/chunk-ONBL2GCU.js +0 -615
  129. package/dist/chunk-TJUJAK5L.js +0 -62
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  findNativeClaudeInstall
3
- } from "./chunk-RABLE5R6.js";
3
+ } from "./chunk-BBFGDYYI.js";
4
4
  import {
5
5
  parseVersion
6
- } from "./chunk-SCMEVDAR.js";
6
+ } from "./chunk-WJLHZ6E6.js";
7
7
  import {
8
8
  isRecord
9
- } from "./chunk-MNKIR2ZB.js";
9
+ } from "./chunk-RQOT6QL3.js";
10
10
 
11
11
  // src/setup/agent-probe.ts
12
12
  import { execSync } from "child_process";
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-POFBE6ZY.js";
4
4
  import {
5
5
  autoUpdateState
6
- } from "./chunk-ATPJGHUP.js";
6
+ } from "./chunk-TI4JYPGQ.js";
7
7
  import {
8
8
  readJsonSafe,
9
9
  writeJsonAtomic
10
- } from "./chunk-SCMEVDAR.js";
10
+ } from "./chunk-WJLHZ6E6.js";
11
11
  import {
12
12
  CLI_PACKAGE_NAMES,
13
13
  POSIX_GLOBAL_ROOT_SEGMENTS,
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-QTOLNRET.js";
18
18
  import {
19
19
  isAutoUpdateResult
20
- } from "./chunk-MNKIR2ZB.js";
20
+ } from "./chunk-RQOT6QL3.js";
21
21
 
22
22
  // src/auto-update.ts
23
23
  import { spawn } from "child_process";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  parseSseMessages
3
- } from "./chunk-BKCI53W6.js";
3
+ } from "./chunk-KNUYUQBP.js";
4
4
  import {
5
5
  NPX_LATEST_COMMAND
6
- } from "./chunk-BAGBCSXA.js";
6
+ } from "./chunk-X2MTVD4W.js";
7
7
 
8
8
  // src/mcp-stdio-bridge.ts
9
9
  var MCP_BRIDGE_BINARY = "pushary-mcp";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  compatibleConfigFile,
3
3
  hasCompatibleHooks
4
- } from "./chunk-WY6YAMZW.js";
4
+ } from "./chunk-ICQCQAUO.js";
5
5
  import {
6
6
  pusharyHookExecutable
7
- } from "./chunk-GTBWWCCM.js";
7
+ } from "./chunk-BFF3ABFV.js";
8
8
  import {
9
9
  isProtectedByScope,
10
10
  registerHookEntry
11
- } from "./chunk-ATPJGHUP.js";
11
+ } from "./chunk-TI4JYPGQ.js";
12
12
  import {
13
13
  isRecord
14
- } from "./chunk-MNKIR2ZB.js";
14
+ } from "./chunk-RQOT6QL3.js";
15
15
 
16
16
  // src/cursor-config.ts
17
17
  var hookCommandOf = (entry) => {
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  resolveInstallSourceFor
3
- } from "./chunk-2VADJ6JH.js";
3
+ } from "./chunk-METUT7V4.js";
4
4
  import {
5
5
  backupFile,
6
6
  readJsonSafe,
7
7
  writeFileAtomic,
8
8
  writeJsonAtomic
9
- } from "./chunk-SCMEVDAR.js";
9
+ } from "./chunk-WJLHZ6E6.js";
10
10
  import {
11
11
  configFilePath
12
- } from "./chunk-Y64JGYTB.js";
12
+ } from "./chunk-32OSSYGZ.js";
13
13
  import {
14
14
  API_KEY_PREFIX_PATTERN,
15
15
  isRecord
16
- } from "./chunk-MNKIR2ZB.js";
16
+ } from "./chunk-RQOT6QL3.js";
17
17
 
18
18
  // src/shell-alias.ts
19
19
  import { homedir } from "os";
@@ -3,13 +3,13 @@ import {
3
3
  NpmMissingError,
4
4
  NpmPermissionError,
5
5
  writeFileAtomic
6
- } from "./chunk-SCMEVDAR.js";
6
+ } from "./chunk-WJLHZ6E6.js";
7
7
  import {
8
8
  NPX_LATEST_COMMAND
9
- } from "./chunk-BAGBCSXA.js";
9
+ } from "./chunk-X2MTVD4W.js";
10
10
  import {
11
11
  readSetupAgentFailures
12
- } from "./chunk-MNKIR2ZB.js";
12
+ } from "./chunk-RQOT6QL3.js";
13
13
 
14
14
  // src/setup/config-write.ts
15
15
  var AgentConfigWriteError = class extends Error {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  readJsonSafe,
3
3
  writeJsonAtomic
4
- } from "./chunk-SCMEVDAR.js";
4
+ } from "./chunk-WJLHZ6E6.js";
5
5
  import {
6
6
  configFilePath
7
- } from "./chunk-Y64JGYTB.js";
7
+ } from "./chunk-32OSSYGZ.js";
8
8
  import {
9
9
  readSetupOutcomeProperties
10
- } from "./chunk-MNKIR2ZB.js";
10
+ } from "./chunk-RQOT6QL3.js";
11
11
 
12
12
  // src/diagnostics/service-runtime.ts
13
13
  var unescapeXml = (value) => value.replaceAll("&quot;", '"').replaceAll("&apos;", "'").replaceAll("&lt;", "<").replaceAll("&gt;", ">").replaceAll("&amp;", "&");
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  realpath
3
- } from "./chunk-HIYLAC3C.js";
3
+ } from "./chunk-IVB5O6NY.js";
4
4
  import {
5
5
  findNativeClaudeInstall
6
- } from "./chunk-RABLE5R6.js";
6
+ } from "./chunk-BBFGDYYI.js";
7
7
  import {
8
8
  readGlobalPrefixAsync,
9
9
  resolveGlobalBinary,
@@ -13,10 +13,10 @@ import {
13
13
  resolvePackageVersionFromBinary,
14
14
  resolvePathBinary,
15
15
  resolvePathBinaryAsync
16
- } from "./chunk-SCMEVDAR.js";
16
+ } from "./chunk-WJLHZ6E6.js";
17
17
  import {
18
18
  MANAGED_PROVIDERS
19
- } from "./chunk-MNKIR2ZB.js";
19
+ } from "./chunk-RQOT6QL3.js";
20
20
 
21
21
  // src/live-capabilities.ts
22
22
  import { homedir } from "os";
@@ -4,30 +4,30 @@ import {
4
4
  postLiveSession,
5
5
  postLiveSessionUntilAccepted,
6
6
  startLiveSessionHeartbeat
7
- } from "./chunk-NUEPJ5W6.js";
7
+ } from "./chunk-XZKSUJ55.js";
8
8
  import {
9
9
  SESSION_IDLE_TIMEOUT_MS,
10
10
  describeIdleWindow,
11
11
  idleDeadlinePassed,
12
12
  startProcessOwnership
13
- } from "./chunk-6CZX6YOE.js";
13
+ } from "./chunk-XNUWKKGS.js";
14
14
  import {
15
15
  spawnClaude
16
16
  } from "./chunk-XHKBHWLX.js";
17
17
  import {
18
18
  repoKeyFor
19
- } from "./chunk-3KXBRSL3.js";
19
+ } from "./chunk-GMHQYX3D.js";
20
20
  import {
21
21
  isAskUserResponse,
22
22
  isDecisionStopped,
23
23
  isWaitForAnswerResponse,
24
24
  withdrawQuestion,
25
25
  writeDegraded
26
- } from "./chunk-DTVHZDYM.js";
26
+ } from "./chunk-D3U6CN7T.js";
27
27
  import {
28
28
  callMcpTool,
29
29
  isRetryable
30
- } from "./chunk-BKCI53W6.js";
30
+ } from "./chunk-KNUYUQBP.js";
31
31
  import {
32
32
  AGENT_QUESTION_DESCRIPTION_MAX,
33
33
  AGENT_QUESTION_HEADER_MAX,
@@ -48,7 +48,7 @@ import {
48
48
  parseCodexQuestions,
49
49
  planElicitationAsk,
50
50
  readElicitationFields
51
- } from "./chunk-MNKIR2ZB.js";
51
+ } from "./chunk-RQOT6QL3.js";
52
52
 
53
53
  // src/codex-question-owner.ts
54
54
  import { createHash } from "crypto";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  keyCheckFromResponse
3
- } from "./chunk-UHS5MMAI.js";
3
+ } from "./chunk-3THDNNVL.js";
4
4
  import {
5
5
  installNetworkDefaults
6
- } from "./chunk-7ILQX47W.js";
6
+ } from "./chunk-P4RXSZDT.js";
7
7
  import {
8
8
  getBaseUrl
9
- } from "./chunk-Y64JGYTB.js";
9
+ } from "./chunk-32OSSYGZ.js";
10
10
  import {
11
11
  isRecord,
12
12
  isToolErrorResult,
13
13
  toolFailureCodeOfResult
14
- } from "./chunk-MNKIR2ZB.js";
14
+ } from "./chunk-RQOT6QL3.js";
15
15
 
16
16
  // src/retry.ts
17
17
  var isRetryable = (err) => {
@@ -1,16 +1,19 @@
1
1
  import {
2
2
  notificationAnswerStep
3
- } from "./chunk-ICFHMJTW.js";
3
+ } from "./chunk-D7Z4USSB.js";
4
+ import {
5
+ canChangeApprovalSettings
6
+ } from "./chunk-5MOJCOCF.js";
4
7
  import {
5
8
  matchMacAccountStep,
6
9
  retryAgentCommand
7
- } from "./chunk-W5L2ZLHE.js";
10
+ } from "./chunk-JOD2325S.js";
8
11
  import {
9
12
  EXIT
10
13
  } from "./chunk-KZERVKTD.js";
11
14
  import {
12
15
  NPX_LATEST_COMMAND
13
- } from "./chunk-BAGBCSXA.js";
16
+ } from "./chunk-X2MTVD4W.js";
14
17
 
15
18
  // src/setup/closing.ts
16
19
  var ACTIVITY_URL = "pushary.com/dashboard/agent/activity";
@@ -37,16 +40,28 @@ var describeAnsweredHeadline = (answer) => {
37
40
  const seconds = answerSeconds(answer.latencyMs);
38
41
  return device ? `You're set. ${device} answered in ${seconds}s.` : `You're set. The test question was answered in ${seconds}s.`;
39
42
  };
40
- var COMMAND_SURFACE = [
41
- { command: "pushary status", summary: "what this machine is connected to" },
43
+ var CHANGEABLE_APPROVAL_COMMANDS = [
42
44
  { command: "pushary mode", summary: "choose where approval requests appear" },
43
- { command: "pushary wait", summary: "show or set how long approvals wait for your phone" },
45
+ { command: "pushary wait", summary: "show or set how long approvals wait for your phone" }
46
+ ];
47
+ var READABLE_APPROVAL_COMMANDS = [
48
+ { command: "pushary mode", summary: "show where approval requests appear" },
49
+ { command: "pushary wait", summary: "show how long approvals wait for your phone" }
50
+ ];
51
+ var approvalCommandSummaries = (canChange) => canChange ? CHANGEABLE_APPROVAL_COMMANDS : READABLE_APPROVAL_COMMANDS;
52
+ var commandSurfaceFor = (keyScope) => [
53
+ { command: "pushary status", summary: "what this machine is connected to" },
54
+ ...approvalCommandSummaries(canChangeApprovalSettings(keyScope)),
44
55
  { command: "pushary stats", summary: "what your agents have been asking" },
45
56
  { command: "pushary claude", summary: "run Claude Code with encrypted transcript support" },
46
57
  { command: "pushary doctor", summary: "check the install" }
47
58
  ];
48
- var SURFACE_COLUMN = Math.max(...COMMAND_SURFACE.map((entry) => entry.command.length)) + 2;
49
- var renderCommandSurface = () => COMMAND_SURFACE.map((entry) => `${entry.command.padEnd(SURFACE_COLUMN)}${entry.summary}`);
59
+ var surfaceColumnOf = (surface) => Math.max(...surface.map((entry) => entry.command.length)) + 2;
60
+ var renderCommandSurface = (keyScope) => {
61
+ const surface = commandSurfaceFor(keyScope);
62
+ const column = surfaceColumnOf(surface);
63
+ return surface.map((entry) => `${entry.command.padEnd(column)}${entry.summary}`);
64
+ };
50
65
  var PHONE_START_VERIFIED_LINE = "Phone-start and steering: local and server checks passed just now. Recheck after sleep or network changes.";
51
66
  var PHONE_START_UNVERIFIED_LINE = "Phone-start and steering: unverified. Run pushary doctor to check the provider, background service and server route.";
52
67
  var PHONE_START_FELL_SHORT_LINES = {
@@ -4,23 +4,23 @@ import {
4
4
  } from "./chunk-XHKBHWLX.js";
5
5
  import {
6
6
  readControlMode
7
- } from "./chunk-ED2SWTPC.js";
7
+ } from "./chunk-JOBSKQ2Z.js";
8
8
  import {
9
9
  getMachineId
10
- } from "./chunk-FWS2KLV2.js";
10
+ } from "./chunk-PIBWX3EF.js";
11
11
  import {
12
12
  pusharyDir
13
- } from "./chunk-ATPJGHUP.js";
13
+ } from "./chunk-TI4JYPGQ.js";
14
14
  import {
15
15
  readJsonSafe,
16
16
  resolveGlobalBinary,
17
17
  writeFileAtomic,
18
18
  writeJsonAtomic,
19
19
  writeJsonAtomicDurable
20
- } from "./chunk-SCMEVDAR.js";
20
+ } from "./chunk-WJLHZ6E6.js";
21
21
  import {
22
22
  getApiKey
23
- } from "./chunk-Y64JGYTB.js";
23
+ } from "./chunk-32OSSYGZ.js";
24
24
  import {
25
25
  CLI_PACKAGE_NAMES,
26
26
  cmdShimTarget,
@@ -30,7 +30,7 @@ import {
30
30
  } from "./chunk-QTOLNRET.js";
31
31
  import {
32
32
  isRecord
33
- } from "./chunk-MNKIR2ZB.js";
33
+ } from "./chunk-RQOT6QL3.js";
34
34
 
35
35
  // src/daemon-lifecycle.ts
36
36
  import { dirname, join, win32 as win32Path } from "path";
@@ -1,18 +1,19 @@
1
1
  import {
2
2
  macAppBridgeAvailable
3
- } from "./chunk-P5HZEGT7.js";
3
+ } from "./chunk-NSS2AIGI.js";
4
4
  import {
5
5
  keyPrefix
6
- } from "./chunk-ED2SWTPC.js";
6
+ } from "./chunk-JOBSKQ2Z.js";
7
7
  import {
8
8
  bridgeAgentKey
9
- } from "./chunk-ATPJGHUP.js";
9
+ } from "./chunk-TI4JYPGQ.js";
10
10
  import {
11
11
  readJsonSafe
12
- } from "./chunk-SCMEVDAR.js";
12
+ } from "./chunk-WJLHZ6E6.js";
13
13
  import {
14
+ isRecord,
14
15
  isValidApiKey
15
- } from "./chunk-MNKIR2ZB.js";
16
+ } from "./chunk-RQOT6QL3.js";
16
17
 
17
18
  // src/shared-mcp-key.ts
18
19
  var asRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : void 0;
@@ -37,7 +38,13 @@ var readMacAppAgentKey = () => {
37
38
  };
38
39
  var macAppConnectionOf = (appKey, appInstalled) => appKey !== null && appInstalled() ? { kind: "connected", keyPrefix: keyPrefix(appKey) } : NOT_CONNECTED;
39
40
  var readMacAppConnection = () => macAppConnectionOf(readMacAppAgentKey(), macAppBridgeAvailable);
40
- var readMacAppConnectionWhenKeyless = (cliKey) => cliKey ? NOT_CONNECTED : readMacAppConnection();
41
+ var keyWrittenByMacApp = (configFileKey, macAppKey = readMacAppAgentKey()) => Boolean(configFileKey) && configFileKey === macAppKey;
42
+ var keyStoredIn = (configFile) => {
43
+ const stored = readJsonSafe(configFile);
44
+ return stored.kind === "ok" && isRecord(stored.value) ? pusharyKey(stored.value.apiKey) : null;
45
+ };
46
+ var configFileHoldsMacAppKey = (configFile, macAppKey = readMacAppAgentKey()) => keyWrittenByMacApp(keyStoredIn(configFile), macAppKey);
47
+ var readMacAppConnectionWhenKeyless = (cliKey, cliKeyIsTheMacAppsOwn = false) => cliKey && !cliKeyIsTheMacAppsOwn ? NOT_CONNECTED : readMacAppConnection();
41
48
 
42
49
  export {
43
50
  pusharyKey,
@@ -48,5 +55,7 @@ export {
48
55
  PAIR_FROM_MAC_APP,
49
56
  readMacAppAgentKey,
50
57
  readMacAppConnection,
58
+ keyWrittenByMacApp,
59
+ configFileHoldsMacAppKey,
51
60
  readMacAppConnectionWhenKeyless
52
61
  };
@@ -4,13 +4,13 @@ import {
4
4
  configFailureKind,
5
5
  retryAgentCommand,
6
6
  writeSetupConfigFile
7
- } from "./chunk-W5L2ZLHE.js";
7
+ } from "./chunk-JOD2325S.js";
8
8
  import {
9
9
  MCP_BRIDGE_BINARY
10
- } from "./chunk-BEQ3MEE3.js";
10
+ } from "./chunk-JBRMIADM.js";
11
11
  import {
12
12
  KEY_FILE_MODE
13
- } from "./chunk-ED2SWTPC.js";
13
+ } from "./chunk-JOBSKQ2Z.js";
14
14
  import {
15
15
  CLINE_SERVER_NAME_TAKEN,
16
16
  CLINE_SETTINGS_REFUSALS,
@@ -30,12 +30,12 @@ import {
30
30
  withClinePusharyServer,
31
31
  withRefreshedClineKey,
32
32
  withoutClinePusharyServer
33
- } from "./chunk-ATPJGHUP.js";
33
+ } from "./chunk-TI4JYPGQ.js";
34
34
  import {
35
35
  readJsonSafe,
36
36
  writeFileAtomic,
37
37
  writeJsonAtomic
38
- } from "./chunk-SCMEVDAR.js";
38
+ } from "./chunk-WJLHZ6E6.js";
39
39
 
40
40
  // src/fx-config.ts
41
41
  var FX_SERVER_NAME = "pushary";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  configFilePath
3
- } from "./chunk-Y64JGYTB.js";
3
+ } from "./chunk-32OSSYGZ.js";
4
4
  import {
5
5
  normalizeInstallSource
6
- } from "./chunk-MNKIR2ZB.js";
6
+ } from "./chunk-RQOT6QL3.js";
7
7
 
8
8
  // src/install-source.ts
9
9
  import { readFileSync } from "fs";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  compatibleConfigFile
3
- } from "./chunk-WY6YAMZW.js";
3
+ } from "./chunk-ICQCQAUO.js";
4
4
  import {
5
5
  hookOwnerOf,
6
6
  hookOwnerOfCommands,
7
7
  liveBridgeProbe,
8
8
  resolveBridgeStub
9
- } from "./chunk-GTBWWCCM.js";
9
+ } from "./chunk-BFF3ABFV.js";
10
10
  import {
11
11
  AGENT_CHOICES
12
- } from "./chunk-SROWUG5W.js";
12
+ } from "./chunk-ZK5WYAMI.js";
13
13
  import {
14
14
  claudeSettings,
15
15
  codexHooksJson,
@@ -18,10 +18,10 @@ import {
18
18
  guardedArgv,
19
19
  pusharyDir,
20
20
  vscodePluginDir
21
- } from "./chunk-ATPJGHUP.js";
21
+ } from "./chunk-TI4JYPGQ.js";
22
22
  import {
23
23
  readJsonSafe
24
- } from "./chunk-SCMEVDAR.js";
24
+ } from "./chunk-WJLHZ6E6.js";
25
25
  import {
26
26
  HOOK_BUDGETS,
27
27
  HOOK_COMPATIBLE_PROFILES,
@@ -29,7 +29,7 @@ import {
29
29
  OPENCODE_APPROVAL_EVENT,
30
30
  hookCompatibleProfile,
31
31
  isRecord
32
- } from "./chunk-MNKIR2ZB.js";
32
+ } from "./chunk-RQOT6QL3.js";
33
33
 
34
34
  // src/opencode-plugin.ts
35
35
  var OPENCODE_PLUGIN_MARKER = "pushary-opencode-plugin w1";
@@ -1,7 +1,63 @@
1
+ import {
2
+ getBaseUrl
3
+ } from "./chunk-32OSSYGZ.js";
1
4
  import {
2
5
  compressTranscriptRecord,
3
6
  redactSecretsFromContent
4
- } from "./chunk-MNKIR2ZB.js";
7
+ } from "./chunk-RQOT6QL3.js";
8
+
9
+ // src/transcript-api.ts
10
+ var fetchTranscriptRecipients = async (apiKey, baseUrl = getBaseUrl()) => {
11
+ try {
12
+ const res = await fetch(`${baseUrl}/api/agent/encryption-account`, {
13
+ headers: { Authorization: `Bearer ${apiKey}` },
14
+ signal: AbortSignal.timeout(5e3)
15
+ });
16
+ if (!res.ok) return null;
17
+ const data = await res.json();
18
+ if (typeof data.publicKey !== "string" || data.publicKey.length === 0) return null;
19
+ const phoneReadsCompressedRecords = data.readsCompressedRecords === true;
20
+ if (data.providerRecovery === void 0 || data.providerRecovery === null) {
21
+ return { phonePublicKey: data.publicKey, phoneReadsCompressedRecords, provider: null };
22
+ }
23
+ if (typeof data.providerRecovery !== "object") return null;
24
+ const provider = data.providerRecovery;
25
+ if (typeof provider.required !== "boolean" || typeof provider.keyId !== "string" || provider.keyId.length === 0 || typeof provider.publicKey !== "string" || provider.publicKey.length === 0) return null;
26
+ return {
27
+ phonePublicKey: data.publicKey,
28
+ phoneReadsCompressedRecords,
29
+ provider: { required: provider.required, keyId: provider.keyId, publicKey: provider.publicKey }
30
+ };
31
+ } catch {
32
+ return null;
33
+ }
34
+ };
35
+ var fetchAccountPublicKey = async (apiKey, baseUrl = getBaseUrl()) => (await fetchTranscriptRecipients(apiKey, baseUrl))?.phonePublicKey ?? null;
36
+ var uploadTranscriptRecords = async (apiKey, params, baseUrl = getBaseUrl()) => {
37
+ try {
38
+ const res = await fetch(`${baseUrl}/api/agent/transcript`, {
39
+ method: "POST",
40
+ headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json" },
41
+ body: JSON.stringify(params),
42
+ signal: AbortSignal.timeout(15e3)
43
+ });
44
+ const body = await res.json().catch(() => null);
45
+ const keyRegistered = body?.keyRegistered === true;
46
+ const keyConflict = body?.keyConflict === true;
47
+ const keyUnavailable = res.status === 503;
48
+ const ids = (value) => Array.isArray(value) ? value.filter((v) => typeof v === "string") : [];
49
+ return {
50
+ ok: res.ok && !keyConflict && (params.dataEncryptionKey === void 0 || keyRegistered),
51
+ keyRegistered,
52
+ keyConflict,
53
+ keyUnavailable,
54
+ settledIds: Array.isArray(body?.settledIds) ? ids(body.settledIds) : null,
55
+ rejectedIds: ids(body?.rejectedIds)
56
+ };
57
+ } catch {
58
+ return { ok: false, keyRegistered: false, keyConflict: false, keyUnavailable: false, settledIds: null, rejectedIds: [] };
59
+ }
60
+ };
5
61
 
6
62
  // src/crypto.ts
7
63
  import nacl from "tweetnacl";
@@ -164,5 +220,8 @@ export {
164
220
  wrapSessionKey,
165
221
  encryptRecord,
166
222
  recordSealerFor,
167
- buildTranscriptRecords
223
+ buildTranscriptRecords,
224
+ fetchTranscriptRecipients,
225
+ fetchAccountPublicKey,
226
+ uploadTranscriptRecords
168
227
  };
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  readExistingMachineId
3
- } from "./chunk-FWS2KLV2.js";
3
+ } from "./chunk-PIBWX3EF.js";
4
4
  import {
5
5
  NetworkError
6
6
  } from "./chunk-PPY5N2E6.js";
7
7
  import {
8
8
  getBaseUrl
9
- } from "./chunk-Y64JGYTB.js";
9
+ } from "./chunk-32OSSYGZ.js";
10
10
  import {
11
11
  getPackageVersion
12
12
  } from "./chunk-QTOLNRET.js";
13
13
  import {
14
14
  clientContextHeaders,
15
15
  redactSecretsFromContent
16
- } from "./chunk-MNKIR2ZB.js";
16
+ } from "./chunk-RQOT6QL3.js";
17
17
 
18
18
  // src/cli/net.ts
19
19
  import { createRequire } from "module";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-ATPJGHUP.js";
3
+ } from "./chunk-TI4JYPGQ.js";
4
4
  import {
5
5
  writeFileAtomic
6
- } from "./chunk-SCMEVDAR.js";
6
+ } from "./chunk-WJLHZ6E6.js";
7
7
 
8
8
  // src/identity.ts
9
9
  import { randomUUID } from "crypto";
@@ -3,24 +3,24 @@ import {
3
3
  expectedLaunchCapabilities,
4
4
  hasSpawnProvider,
5
5
  resolveControlPolicy
6
- } from "./chunk-R4FL5JHK.js";
6
+ } from "./chunk-KE4TSJUD.js";
7
7
  import {
8
8
  daemonHasRemoteProof,
9
9
  daemonServiceManagerAvailable,
10
10
  hasDaemonServiceDefinition,
11
11
  readDaemonNeedsLogin,
12
12
  readDaemonStatus
13
- } from "./chunk-ADXHPGBZ.js";
13
+ } from "./chunk-LJHDUKBB.js";
14
14
  import {
15
15
  readControlMode,
16
16
  readKeySource
17
- } from "./chunk-ED2SWTPC.js";
17
+ } from "./chunk-JOBSKQ2Z.js";
18
18
  import {
19
19
  getMachineId
20
- } from "./chunk-FWS2KLV2.js";
20
+ } from "./chunk-PIBWX3EF.js";
21
21
  import {
22
22
  getBaseUrl
23
- } from "./chunk-Y64JGYTB.js";
23
+ } from "./chunk-32OSSYGZ.js";
24
24
  import {
25
25
  getPackageVersion
26
26
  } from "./chunk-QTOLNRET.js";
@@ -12,7 +12,7 @@ import {
12
12
  reachVerdict,
13
13
  reachesYou,
14
14
  verifyDelivery
15
- } from "./chunk-ICFHMJTW.js";
15
+ } from "./chunk-D7Z4USSB.js";
16
16
  import {
17
17
  humanIsTty,
18
18
  writeHuman
@@ -24,14 +24,14 @@ import {
24
24
  } from "./chunk-FO3MDD26.js";
25
25
  import {
26
26
  reportedInstallSource
27
- } from "./chunk-2VADJ6JH.js";
27
+ } from "./chunk-METUT7V4.js";
28
28
  import {
29
29
  NPX_LATEST_COMMAND
30
- } from "./chunk-BAGBCSXA.js";
30
+ } from "./chunk-X2MTVD4W.js";
31
31
  import {
32
32
  NO_PAIRING_COMPUTER,
33
33
  PAIR_TTL_SECONDS
34
- } from "./chunk-MNKIR2ZB.js";
34
+ } from "./chunk-RQOT6QL3.js";
35
35
 
36
36
  // src/onboarding.ts
37
37
  import qrcodeTerminal from "qrcode-terminal";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readConfigFileKey
3
- } from "./chunk-ED2SWTPC.js";
3
+ } from "./chunk-JOBSKQ2Z.js";
4
4
 
5
5
  // src/bell/fleet.ts
6
6
  import { closeSync, constants, futimesSync, lstatSync, mkdirSync, openSync, readdirSync, unlinkSync } from "fs";