pushary 1.9.59 → 1.9.60

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 (126) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/data/cursor-plugin/.cursor-plugin/plugin.json +5 -1
  3. package/data/cursor-plugin/CHANGELOG.md +4 -0
  4. package/dist/{api-UVJGNZIF.js → api-ASQA5PZM.js} +11 -11
  5. package/dist/bin/pushary-bell-hook.js +29 -29
  6. package/dist/bin/pushary-bell.js +12 -12
  7. package/dist/bin/pushary-claude.js +31 -30
  8. package/dist/bin/pushary-clean.js +58 -53
  9. package/dist/bin/pushary-codex-bridge.js +22 -22
  10. package/dist/bin/pushary-codex-hook.js +34 -34
  11. package/dist/bin/pushary-codex-session.js +8 -8
  12. package/dist/bin/pushary-codex.js +15 -15
  13. package/dist/bin/pushary-connect.js +29 -29
  14. package/dist/bin/pushary-cowork.js +7 -7
  15. package/dist/bin/pushary-daemon.js +39 -39
  16. package/dist/bin/pushary-disconnect.js +42 -29
  17. package/dist/bin/pushary-doctor.js +51 -47
  18. package/dist/bin/pushary-elicitation-hook.js +29 -29
  19. package/dist/bin/pushary-gemini-bridge.js +15 -15
  20. package/dist/bin/pushary-gemini-hook.js +31 -31
  21. package/dist/bin/pushary-hook.js +33 -33
  22. package/dist/bin/pushary-login.js +22 -19
  23. package/dist/bin/pushary-logout.js +36 -31
  24. package/dist/bin/pushary-mcp.js +12 -12
  25. package/dist/bin/pushary-mode.js +41 -55
  26. package/dist/bin/pushary-notification-hook.js +28 -28
  27. package/dist/bin/pushary-opencode-hook.js +30 -30
  28. package/dist/bin/pushary-permission-denied-hook.js +33 -33
  29. package/dist/bin/pushary-permission-hook.js +32 -32
  30. package/dist/bin/pushary-post-hook.js +28 -28
  31. package/dist/bin/pushary-prompt-hook.js +28 -28
  32. package/dist/bin/pushary-session-end-hook.js +28 -28
  33. package/dist/bin/pushary-session-start-hook.js +35 -35
  34. package/dist/bin/pushary-setup.js +49 -46
  35. package/dist/bin/pushary-stats.js +5 -5
  36. package/dist/bin/pushary-status.js +41 -36
  37. package/dist/bin/pushary-stop-hook.js +28 -28
  38. package/dist/bin/pushary-stopfailure-hook.js +28 -28
  39. package/dist/bin/pushary-suggestions.js +33 -39
  40. package/dist/bin/pushary-transcript-register.js +20 -20
  41. package/dist/bin/pushary-transcripts.js +33 -20
  42. package/dist/bin/pushary-upgrade.js +71 -50
  43. package/dist/bin/pushary-wait.js +36 -42
  44. package/dist/bin/pushary.js +8 -8
  45. package/dist/{chunk-PVANKDWM.js → chunk-2AELPDMT.js} +1 -1
  46. package/dist/{chunk-US3IT6ZC.js → chunk-2QREHU4O.js} +11 -4
  47. package/dist/{chunk-W47WL6JY.js → chunk-33OOEVPG.js} +1 -1
  48. package/dist/{chunk-AS4Z6KS4.js → chunk-4MUFZU2G.js} +1 -1
  49. package/dist/{chunk-JAKBCKEB.js → chunk-4MWRR5IT.js} +8 -7
  50. package/dist/{chunk-TCH5UCPR.js → chunk-4PZXI7WU.js} +2 -2
  51. package/dist/{chunk-IBXHVYN2.js → chunk-56JCQQLS.js} +2 -2
  52. package/dist/{chunk-5BNXJTOZ.js → chunk-5RU35K57.js} +3 -12
  53. package/dist/{chunk-T65RIQK2.js → chunk-625DZLT5.js} +6 -6
  54. package/dist/{chunk-5PP4455M.js → chunk-6LOQE4J4.js} +3 -3
  55. package/dist/{chunk-KQHY6L3X.js → chunk-6MC2XXFD.js} +4 -4
  56. package/dist/{chunk-KZCYHWDF.js → chunk-6MJWYYAS.js} +62 -49
  57. package/dist/chunk-7BHI3PZN.js +41 -0
  58. package/dist/{chunk-D6CXQIXO.js → chunk-7JXJJNQ5.js} +1 -1
  59. package/dist/{chunk-MSU3VKGJ.js → chunk-7WFRY6OL.js} +2 -2
  60. package/dist/{chunk-AY32RSUC.js → chunk-ADR3KHOC.js} +2 -2
  61. package/dist/{chunk-MMLIQDTG.js → chunk-ATKN4BJT.js} +1 -1
  62. package/dist/{chunk-762CDAJJ.js → chunk-AXJLJJ3M.js} +7 -0
  63. package/dist/{chunk-4XXZUFWN.js → chunk-BG4Y64FW.js} +1 -1
  64. package/dist/{chunk-X4ES7QBT.js → chunk-CDQHQAS7.js} +9 -7
  65. package/dist/{chunk-2WMZDKPM.js → chunk-CEQ2AZH4.js} +13 -13
  66. package/dist/{chunk-DK35M4TH.js → chunk-CSOROFJY.js} +5 -5
  67. package/dist/{chunk-2FVP7WRP.js → chunk-DJ7EZIQA.js} +3 -3
  68. package/dist/{chunk-V3PDUDPB.js → chunk-ELLJPP6O.js} +2 -2
  69. package/dist/{chunk-BMPZ5HVJ.js → chunk-ERK24P76.js} +11 -1
  70. package/dist/{chunk-WW24SG27.js → chunk-EZHY65QA.js} +21 -11
  71. package/dist/{chunk-3NROUNIS.js → chunk-FDWMG6NY.js} +2 -2
  72. package/dist/{chunk-RQDP2SJY.js → chunk-FUZ5VYWD.js} +1 -1
  73. package/dist/{chunk-3N2ZTHZZ.js → chunk-GAMVAORR.js} +1 -1
  74. package/dist/{chunk-4QF2YLYK.js → chunk-HC3FHDKB.js} +6 -6
  75. package/dist/{chunk-TDOKDCFH.js → chunk-IF26ZGZ7.js} +3 -3
  76. package/dist/{chunk-KHDD74MK.js → chunk-J4KQL7YZ.js} +5 -5
  77. package/dist/{chunk-UVZK5LIK.js → chunk-K4MBKXAE.js} +1 -1
  78. package/dist/{chunk-5O6D4J2K.js → chunk-L3AFVFGQ.js} +2 -2
  79. package/dist/{chunk-MA37WNVS.js → chunk-METMK3L4.js} +4 -4
  80. package/dist/{chunk-SIU6OWA6.js → chunk-MUNL23WE.js} +6 -6
  81. package/dist/{chunk-WWAVHLGS.js → chunk-NKLNU577.js} +5 -5
  82. package/dist/{chunk-GMXKITVA.js → chunk-NMUI3ZWG.js} +1 -1
  83. package/dist/{chunk-M46WDK64.js → chunk-O6IUZGWV.js} +1 -1
  84. package/dist/chunk-PPY5N2E6.js +58 -0
  85. package/dist/{chunk-KQWN7C5C.js → chunk-PUHP4IBA.js} +4 -4
  86. package/dist/{chunk-JBCMXSBO.js → chunk-QGSHV3WO.js} +5 -5
  87. package/dist/{chunk-VAJHDTJX.js → chunk-QLMOU57V.js} +28 -17
  88. package/dist/{chunk-UFJS4RR7.js → chunk-QUBIEZXC.js} +3 -3
  89. package/dist/{chunk-EBQTWH5O.js → chunk-RLVJ6TVL.js} +23 -23
  90. package/dist/{chunk-LAEW5QQD.js → chunk-RPPXQNIA.js} +1 -1
  91. package/dist/{chunk-YQVKG5MC.js → chunk-S54C6TQC.js} +7 -6
  92. package/dist/{chunk-5EFNBL6V.js → chunk-SEILUNWB.js} +3 -3
  93. package/dist/{chunk-L3NVHPBU.js → chunk-SOCJ2N3E.js} +6 -6
  94. package/dist/{chunk-RAMQBSVZ.js → chunk-SVQWHV65.js} +1 -1
  95. package/dist/{chunk-EHCIQA5D.js → chunk-U7NR4JVD.js} +4 -4
  96. package/dist/{chunk-M6MOQBR5.js → chunk-USE5IEEW.js} +1 -1
  97. package/dist/{chunk-UTJ5465F.js → chunk-V57XLKZL.js} +2 -2
  98. package/dist/{chunk-BRUHVTFB.js → chunk-VIJIG5YL.js} +2 -2
  99. package/dist/{chunk-5JWCWALO.js → chunk-W2IVTHIG.js} +9 -9
  100. package/dist/{chunk-OZIXBN3O.js → chunk-WFSGCFXQ.js} +2 -2
  101. package/dist/{chunk-KAJDKYUM.js → chunk-WN3RACVD.js} +3 -3
  102. package/dist/{chunk-MYU5D5VH.js → chunk-WXPVVXBU.js} +4 -4
  103. package/dist/{chunk-6ONSTCDJ.js → chunk-WXZHQ3TT.js} +5 -5
  104. package/dist/chunk-X3YKQJCZ.js +36 -0
  105. package/dist/{chunk-BKVX53QR.js → chunk-XEJOPVCG.js} +1 -1
  106. package/dist/{chunk-75UYYIFJ.js → chunk-XV6S5PWW.js} +3 -3
  107. package/dist/{chunk-CPRA7IEK.js → chunk-Y5V4PA2Z.js} +2 -2
  108. package/dist/{chunk-3RKIJM26.js → chunk-Y5VKZNFN.js} +2 -2
  109. package/dist/{chunk-DS7X36Z3.js → chunk-YGE6ML3O.js} +4 -4
  110. package/dist/{chunk-XGP5VSQG.js → chunk-YPD3MTFU.js} +1 -1
  111. package/dist/{chunk-KW3DED2A.js → chunk-ZGOJLNKS.js} +4 -4
  112. package/dist/{codex-app-cards-switch-N77RWKCO.js → codex-app-cards-switch-ZO76D2NY.js} +11 -11
  113. package/dist/{codex-desktop-launch-KIX7OMTL.js → codex-desktop-launch-MJT5E3O3.js} +1 -1
  114. package/dist/{codex-session-launch-XV7SIIWP.js → codex-session-launch-PTFCVIC7.js} +19 -19
  115. package/dist/{config-HH4DYYNX.js → config-SXV6XNVU.js} +3 -3
  116. package/dist/{global-upgrade-YWIVJIUR.js → global-upgrade-ETDP32LO.js} +9 -9
  117. package/dist/{identity-4J7Y2MW3.js → identity-OOLIOSMR.js} +4 -4
  118. package/dist/{live-capabilities-LHZBCI5U.js → live-capabilities-2XIFA7YO.js} +4 -4
  119. package/dist/{paths-ES3V7BWQ.js → paths-IIOQZESZ.js} +3 -3
  120. package/dist/{reapply-KA5SIYWX.js → reapply-KFAJSKOQ.js} +28 -28
  121. package/dist/src/index.js +22 -22
  122. package/dist/{upgrade-lock-TJPKU5HL.js → upgrade-lock-T6ILR644.js} +4 -4
  123. package/dist/{usage-7ALXBJVJ.js → usage-6TN7FVWS.js} +3 -3
  124. package/package.json +1 -1
  125. package/dist/chunk-7QLSKOSU.js +0 -19
  126. package/dist/chunk-EO23EUOK.js +0 -14
@@ -6,38 +6,39 @@ import {
6
6
  } from "./chunk-QW3FRUFB.js";
7
7
  import {
8
8
  ensureDaemonRunning
9
- } from "./chunk-4QF2YLYK.js";
9
+ } from "./chunk-HC3FHDKB.js";
10
10
  import {
11
11
  hookOwnerOf
12
- } from "./chunk-X4ES7QBT.js";
12
+ } from "./chunk-CDQHQAS7.js";
13
13
  import {
14
14
  buildTranscriptRecords,
15
15
  decodePublicKey,
16
16
  generateSessionKey,
17
17
  wrapSessionKey
18
- } from "./chunk-PVANKDWM.js";
18
+ } from "./chunk-2AELPDMT.js";
19
19
  import {
20
20
  fetchTranscriptRecipients,
21
21
  uploadTranscriptRecords
22
- } from "./chunk-3N2ZTHZZ.js";
22
+ } from "./chunk-GAMVAORR.js";
23
23
  import {
24
24
  transcriptEnvironmentPreference,
25
25
  transcriptsEnabled
26
- } from "./chunk-D6CXQIXO.js";
26
+ } from "./chunk-7JXJJNQ5.js";
27
27
  import {
28
28
  readTranscriptPreference
29
- } from "./chunk-KAJDKYUM.js";
29
+ } from "./chunk-WN3RACVD.js";
30
30
  import {
31
+ claudeConfigDir,
31
32
  codexHome,
32
33
  pusharyDir
33
- } from "./chunk-KZCYHWDF.js";
34
+ } from "./chunk-6MJWYYAS.js";
34
35
  import {
35
36
  writeJsonAtomic
36
37
  } from "./chunk-QENTGE75.js";
37
38
  import {
38
39
  getApiKey,
39
40
  getBaseUrl
40
- } from "./chunk-4XXZUFWN.js";
41
+ } from "./chunk-BG4Y64FW.js";
41
42
 
42
43
  // src/transcript-registration.ts
43
44
  import { createHash } from "crypto";
@@ -92,7 +93,6 @@ var transcriptLinesSeenLive = (lines, epochStartedAtMs, startedBeforeEpoch) => l
92
93
  });
93
94
 
94
95
  // src/transcript-sync.ts
95
- import { homedir as homedir2 } from "os";
96
96
  import { join as join2, resolve } from "path";
97
97
  import { closeSync, existsSync as existsSync2, fstatSync, openSync, readFileSync as readFileSync2, readSync, statSync as statSync2 } from "fs";
98
98
 
@@ -165,7 +165,7 @@ var sweepStaleSessionKeys = (now = Date.now(), dir = sessionDir()) => {
165
165
  // src/transcript-sync.ts
166
166
  var claudeTranscriptPath = (cwd, sessionId) => {
167
167
  const projectId = resolve(cwd).replace(/[^a-zA-Z0-9-]/g, "-");
168
- const configDir = process.env.CLAUDE_CONFIG_DIR || join2(homedir2(), ".claude");
168
+ const configDir = claudeConfigDir();
169
169
  return join2(configDir, "projects", projectId, `${sessionId}.jsonl`);
170
170
  };
171
171
  var createSyncState = () => ({
@@ -446,7 +446,7 @@ var startTranscriptSync = (opts) => {
446
446
  };
447
447
 
448
448
  // src/transcript-registration.ts
449
- import { homedir as homedir3 } from "os";
449
+ import { homedir as homedir2 } from "os";
450
450
  var defaultRegistryDirectory = () => process.env.PUSHARY_TRANSCRIPT_REGISTRY_DIR || join3(pusharyDir(), "transcript-capture");
451
451
  var cliRegistry = (apiKey = getApiKey()) => ({ apiKey, baseUrl: getBaseUrl(), directory: defaultRegistryDirectory() });
452
452
  var accountFor = (registry) => createHash("sha256").update(`${registry.baseUrl}\0${registry.apiKey}`).digest("hex");
@@ -466,7 +466,7 @@ var registeredTranscriptEnabled = (apiKey, sessionId) => {
466
466
  }
467
467
  };
468
468
  var macOwnsClaudeHooks = (cwd) => [
469
- join3(process.env.CLAUDE_CONFIG_DIR || join3(homedir3(), ".claude"), "settings.json"),
469
+ join3(claudeConfigDir(), "settings.json"),
470
470
  join3(cwd, ".claude", "settings.json"),
471
471
  join3(cwd, ".claude", "settings.local.json")
472
472
  ].some((path) => {
@@ -478,7 +478,7 @@ var macOwnsClaudeHooks = (cwd) => [
478
478
  });
479
479
  var TRANSCRIPT_ROOT_NAME = { claude: "projects", codex: "sessions" };
480
480
  var transcriptRoots = (source) => {
481
- const home = homedir3();
481
+ const home = homedir2();
482
482
  if (source === "codex") return [join3(codexHome(), TRANSCRIPT_ROOT_NAME.codex)];
483
483
  const configured = process.env.CLAUDE_CONFIG_DIR;
484
484
  return [join3(configured || join3(home, ".claude"), TRANSCRIPT_ROOT_NAME.claude), join3(home, ".claude", TRANSCRIPT_ROOT_NAME.claude)];
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  APPROVAL_SETTINGS_PATH
3
- } from "./chunk-DS7X36Z3.js";
3
+ } from "./chunk-YGE6ML3O.js";
4
4
  import {
5
5
  readMacAppAgentKey
6
- } from "./chunk-EHCIQA5D.js";
6
+ } from "./chunk-U7NR4JVD.js";
7
7
  import {
8
8
  findExportedKeyLines,
9
9
  isAdoptedMacAppKey,
@@ -13,13 +13,13 @@ import {
13
13
  readConfigFileKey,
14
14
  readKeySource,
15
15
  readMacAppKeyPrefix
16
- } from "./chunk-KAJDKYUM.js";
16
+ } from "./chunk-WN3RACVD.js";
17
17
  import {
18
18
  absoluteUrl
19
- } from "./chunk-MA37WNVS.js";
19
+ } from "./chunk-METMK3L4.js";
20
20
  import {
21
21
  isValidApiKey
22
- } from "./chunk-762CDAJJ.js";
22
+ } from "./chunk-AXJLJJ3M.js";
23
23
 
24
24
  // src/key-revocation.ts
25
25
  var SELF_REVOKE_PATH = "/api/v1/server/keys/self/revoke";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  callMcpTool
3
- } from "./chunk-5EFNBL6V.js";
3
+ } from "./chunk-SEILUNWB.js";
4
4
  import {
5
5
  NPX_LATEST_COMMAND
6
- } from "./chunk-BMPZ5HVJ.js";
6
+ } from "./chunk-ERK24P76.js";
7
7
  import {
8
8
  classifyConfirmResponse,
9
9
  isAnswerSource
10
- } from "./chunk-762CDAJJ.js";
10
+ } from "./chunk-AXJLJJ3M.js";
11
11
 
12
12
  // src/reach.ts
13
13
  var reachVerdict = (channels) => {
@@ -3,11 +3,11 @@ import {
3
3
  decodePublicKey,
4
4
  generateSessionKey,
5
5
  wrapSessionKey
6
- } from "./chunk-PVANKDWM.js";
6
+ } from "./chunk-2AELPDMT.js";
7
7
  import {
8
8
  fetchTranscriptRecipients,
9
9
  uploadTranscriptRecords
10
- } from "./chunk-3N2ZTHZZ.js";
10
+ } from "./chunk-GAMVAORR.js";
11
11
 
12
12
  // src/live-session.ts
13
13
  var MAX_TRANSCRIPT_QUEUE = 100;
@@ -2,7 +2,7 @@ import {
2
2
  DISCONNECT_AGENT_IDS,
3
3
  SETUP_AGENT_CHOICES,
4
4
  isApprovalMode
5
- } from "./chunk-762CDAJJ.js";
5
+ } from "./chunk-AXJLJJ3M.js";
6
6
 
7
7
  // src/cli/mode-request.ts
8
8
  var parseDuration = (value) => {
@@ -146,6 +146,16 @@ var resolveCommandName = (token) => {
146
146
  };
147
147
  var isInvocationOf = (token, name) => resolveCommandName(token) === name;
148
148
  var COMMAND_OPTIONS = {
149
+ login: [
150
+ ["--with-token", "Read an API key from stdin"],
151
+ ["--no-browser", "Print the sign-in link without opening a browser"],
152
+ ["--json", "Emit the result as one object instead of the screen"],
153
+ ["--force", "Start a new sign-in instead of reusing the saved key"]
154
+ ],
155
+ pair: [
156
+ ["--app", "Pair with the Pushary app"],
157
+ ["--browser", "Pair through a browser (default)"]
158
+ ],
149
159
  cowork: [
150
160
  ["--open", "Also open the setup guide in your browser"],
151
161
  ["--instructions", "Print standing instructions to paste into Cowork"],
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SubscriptionRequiredError,
3
3
  callMcpTool
4
- } from "./chunk-5EFNBL6V.js";
4
+ } from "./chunk-SEILUNWB.js";
5
5
  import {
6
6
  CLIENT_REPORT_DISABLE_ENV,
7
7
  isDisabledByEnv
@@ -9,14 +9,14 @@ import {
9
9
  import {
10
10
  installNetworkDefaults,
11
11
  isNetworkFailure
12
- } from "./chunk-JAKBCKEB.js";
12
+ } from "./chunk-4MWRR5IT.js";
13
13
  import {
14
14
  clientReportClaims
15
- } from "./chunk-KZCYHWDF.js";
15
+ } from "./chunk-6MJWYYAS.js";
16
16
  import {
17
17
  getApiKey,
18
18
  getBaseUrl
19
- } from "./chunk-4XXZUFWN.js";
19
+ } from "./chunk-BG4Y64FW.js";
20
20
  import {
21
21
  ASK_AGENT_NAME_MAX,
22
22
  CLIENT_REPORT_PATH,
@@ -24,7 +24,7 @@ import {
24
24
  GATE_PERMISSION_MODE_MAX_LENGTH,
25
25
  degradedLine,
26
26
  truncateLine
27
- } from "./chunk-762CDAJJ.js";
27
+ } from "./chunk-AXJLJJ3M.js";
28
28
 
29
29
  // src/api.ts
30
30
  import { randomUUID } from "crypto";
@@ -114,6 +114,7 @@ var claimReportWindow = (claimsDir, key, now) => {
114
114
 
115
115
  // src/client-report.ts
116
116
  var CLIENT_REPORT_TIMEOUT_MS = 1e3;
117
+ var CLIENT_REPORT_MAX_ATTEMPTS = 2;
117
118
  var readApiKey = () => {
118
119
  try {
119
120
  return getApiKey();
@@ -147,12 +148,21 @@ var createClientErrorReporter = (deps) => {
147
148
  const apiKey = deps.apiKey();
148
149
  const now = deps.now();
149
150
  if (!apiKey || !claimReport(reportKey(event), now)) return;
150
- await deps.fetchImpl(`${deps.baseUrl()}${CLIENT_REPORT_PATH}`, {
151
- method: "POST",
152
- headers: { "Authorization": `Bearer ${apiKey}`, "Content-Type": "application/json" },
153
- body: JSON.stringify({ ...event, occurredAt: new Date(now).toISOString() }),
154
- signal: AbortSignal.timeout(CLIENT_REPORT_TIMEOUT_MS)
155
- });
151
+ const signal = AbortSignal.timeout(CLIENT_REPORT_TIMEOUT_MS);
152
+ for (let attempt = 0; attempt < CLIENT_REPORT_MAX_ATTEMPTS && !signal.aborted; attempt++) {
153
+ try {
154
+ const response = await deps.fetchImpl(`${deps.baseUrl()}${CLIENT_REPORT_PATH}`, {
155
+ method: "POST",
156
+ headers: { "Authorization": `Bearer ${apiKey}`, "Content-Type": "application/json" },
157
+ body: JSON.stringify({ ...event, occurredAt: new Date(now).toISOString() }),
158
+ signal
159
+ });
160
+ await response.body?.cancel();
161
+ if (response.ok || response.status < 500 && response.status !== 429) return;
162
+ } catch {
163
+ if (signal.aborted) return;
164
+ }
165
+ }
156
166
  } catch {
157
167
  return;
158
168
  }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  parseSseMessages
3
- } from "./chunk-5EFNBL6V.js";
3
+ } from "./chunk-SEILUNWB.js";
4
4
  import {
5
5
  NPX_LATEST_COMMAND
6
- } from "./chunk-BMPZ5HVJ.js";
6
+ } from "./chunk-ERK24P76.js";
7
7
 
8
8
  // src/mcp-stdio-bridge.ts
9
9
  var MCP_BRIDGE_BINARY = "pushary-mcp";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-3EGEA4KH.js";
10
10
  import {
11
11
  getBaseUrl
12
- } from "./chunk-4XXZUFWN.js";
12
+ } from "./chunk-BG4Y64FW.js";
13
13
 
14
14
  // src/cli/login-ui.ts
15
15
  import { hostname } from "os";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getBaseUrl
3
- } from "./chunk-4XXZUFWN.js";
3
+ } from "./chunk-BG4Y64FW.js";
4
4
 
5
5
  // src/transcript-api.ts
6
6
  var fetchTranscriptRecipients = async (apiKey, baseUrl = getBaseUrl()) => {
@@ -4,16 +4,16 @@ import {
4
4
  } from "./chunk-XHKBHWLX.js";
5
5
  import {
6
6
  readControlMode
7
- } from "./chunk-KAJDKYUM.js";
7
+ } from "./chunk-WN3RACVD.js";
8
8
  import {
9
9
  getMachineId
10
- } from "./chunk-M46WDK64.js";
10
+ } from "./chunk-O6IUZGWV.js";
11
11
  import {
12
12
  pusharyDir
13
- } from "./chunk-KZCYHWDF.js";
13
+ } from "./chunk-6MJWYYAS.js";
14
14
  import {
15
15
  resolveGlobalBinary
16
- } from "./chunk-US3IT6ZC.js";
16
+ } from "./chunk-2QREHU4O.js";
17
17
  import {
18
18
  readJsonSafe,
19
19
  writeFileAtomic,
@@ -22,7 +22,7 @@ import {
22
22
  } from "./chunk-QENTGE75.js";
23
23
  import {
24
24
  getApiKey
25
- } from "./chunk-4XXZUFWN.js";
25
+ } from "./chunk-BG4Y64FW.js";
26
26
  import {
27
27
  CLI_PACKAGE_NAMES,
28
28
  cmdShimTarget,
@@ -32,7 +32,7 @@ import {
32
32
  } from "./chunk-QTOLNRET.js";
33
33
  import {
34
34
  isRecord
35
- } from "./chunk-762CDAJJ.js";
35
+ } from "./chunk-AXJLJJ3M.js";
36
36
 
37
37
  // src/daemon-lifecycle.ts
38
38
  import { dirname, join, win32 as win32Path } from "path";
@@ -5,16 +5,16 @@ import {
5
5
  import {
6
6
  NOTIFICATION_MATCHED_TYPES,
7
7
  POSTTOOLUSE_MIRRORED_TOOLS
8
- } from "./chunk-W47WL6JY.js";
8
+ } from "./chunk-33OOEVPG.js";
9
9
  import {
10
10
  isProtectedByScope,
11
11
  registerHookEntry
12
- } from "./chunk-KZCYHWDF.js";
12
+ } from "./chunk-6MJWYYAS.js";
13
13
  import {
14
14
  CLAUDE_PRETOOLUSE_MATCHER,
15
15
  HOOK_BUDGETS,
16
16
  HOOK_LOCATOR_BINARY
17
- } from "./chunk-762CDAJJ.js";
17
+ } from "./chunk-AXJLJJ3M.js";
18
18
 
19
19
  // src/gemini-config.ts
20
20
  var GEMINI_HOOK_BINARY = "pushary-gemini-hook";
@@ -3,24 +3,24 @@ import {
3
3
  expectedLaunchCapabilities,
4
4
  hasSpawnProvider,
5
5
  resolveControlPolicy
6
- } from "./chunk-5PP4455M.js";
6
+ } from "./chunk-6LOQE4J4.js";
7
7
  import {
8
8
  daemonHasRemoteProof,
9
9
  daemonServiceManagerAvailable,
10
10
  hasDaemonServiceDefinition,
11
11
  readDaemonNeedsLogin,
12
12
  readDaemonStatus
13
- } from "./chunk-4QF2YLYK.js";
13
+ } from "./chunk-HC3FHDKB.js";
14
14
  import {
15
15
  readControlMode,
16
16
  readKeySource
17
- } from "./chunk-KAJDKYUM.js";
17
+ } from "./chunk-WN3RACVD.js";
18
18
  import {
19
19
  getMachineId
20
- } from "./chunk-M46WDK64.js";
20
+ } from "./chunk-O6IUZGWV.js";
21
21
  import {
22
22
  getBaseUrl
23
- } from "./chunk-4XXZUFWN.js";
23
+ } from "./chunk-BG4Y64FW.js";
24
24
  import {
25
25
  getPackageVersion
26
26
  } from "./chunk-QTOLNRET.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-KZERVKTD.js";
4
4
  import {
5
5
  renderCommandHelp
6
- } from "./chunk-BMPZ5HVJ.js";
6
+ } from "./chunk-ERK24P76.js";
7
7
  import {
8
8
  getPackageVersion
9
9
  } from "./chunk-QTOLNRET.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-KZCYHWDF.js";
3
+ } from "./chunk-6MJWYYAS.js";
4
4
  import {
5
5
  readJsonSafe,
6
6
  writeFileAtomic
@@ -13,7 +13,7 @@ import {
13
13
  serializeDeclinedAgents,
14
14
  withDeclinedAgent,
15
15
  withoutDeclinedAgent
16
- } from "./chunk-762CDAJJ.js";
16
+ } from "./chunk-AXJLJJ3M.js";
17
17
 
18
18
  // src/declined-agents-file.ts
19
19
  import { join } from "path";
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  pusharyFetch
3
- } from "./chunk-JAKBCKEB.js";
3
+ } from "./chunk-4MWRR5IT.js";
4
4
  import {
5
5
  NetworkError
6
- } from "./chunk-7QLSKOSU.js";
6
+ } from "./chunk-PPY5N2E6.js";
7
7
  import {
8
8
  EXIT
9
9
  } from "./chunk-KZERVKTD.js";
10
10
  import {
11
11
  getBaseUrl
12
- } from "./chunk-4XXZUFWN.js";
12
+ } from "./chunk-BG4Y64FW.js";
13
13
  import {
14
14
  isValidApiKey,
15
15
  normalizeKeyScope
16
- } from "./chunk-762CDAJJ.js";
16
+ } from "./chunk-AXJLJJ3M.js";
17
17
 
18
18
  // src/session.ts
19
19
  var samePusharyAccount = (left, right) => left.kind === "ok" && right.kind === "ok" && left.identity.workspaceId !== "" && left.identity.workspaceId === right.identity.workspaceId && left.identity.siteId === right.identity.siteId;
@@ -4,30 +4,30 @@ import {
4
4
  postLiveSession,
5
5
  postLiveSessionUntilAccepted,
6
6
  startLiveSessionHeartbeat
7
- } from "./chunk-V3PDUDPB.js";
7
+ } from "./chunk-ELLJPP6O.js";
8
8
  import {
9
9
  SESSION_IDLE_TIMEOUT_MS,
10
10
  describeIdleWindow,
11
11
  idleDeadlinePassed,
12
12
  startProcessOwnership
13
- } from "./chunk-MSU3VKGJ.js";
13
+ } from "./chunk-7WFRY6OL.js";
14
14
  import {
15
15
  spawnClaude
16
16
  } from "./chunk-XHKBHWLX.js";
17
17
  import {
18
18
  repoKeyFor
19
- } from "./chunk-XGP5VSQG.js";
19
+ } from "./chunk-YPD3MTFU.js";
20
20
  import {
21
21
  isAskUserResponse,
22
22
  isDecisionStopped,
23
23
  isWaitForAnswerResponse,
24
24
  withdrawQuestion,
25
25
  writeDegraded
26
- } from "./chunk-WW24SG27.js";
26
+ } from "./chunk-EZHY65QA.js";
27
27
  import {
28
28
  callMcpTool,
29
29
  isRetryable
30
- } from "./chunk-5EFNBL6V.js";
30
+ } from "./chunk-SEILUNWB.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-762CDAJJ.js";
51
+ } from "./chunk-AXJLJJ3M.js";
52
52
 
53
53
  // src/codex-question-owner.ts
54
54
  import { createHash } from "crypto";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  SETUP_FLAGS
3
- } from "./chunk-75UYYIFJ.js";
3
+ } from "./chunk-XV6S5PWW.js";
4
4
  import {
5
5
  parseFlags
6
- } from "./chunk-GMXKITVA.js";
6
+ } from "./chunk-NMUI3ZWG.js";
7
7
  import {
8
8
  UsageError
9
- } from "./chunk-7QLSKOSU.js";
9
+ } from "./chunk-PPY5N2E6.js";
10
10
  import {
11
11
  NPX_LATEST_COMMAND
12
- } from "./chunk-BMPZ5HVJ.js";
12
+ } from "./chunk-ERK24P76.js";
13
13
  import {
14
14
  CLAUDE_CONNECTOR_GUIDE,
15
15
  CLAUDE_CONNECTOR_STEPS,
@@ -17,7 +17,7 @@ import {
17
17
  CLAUDE_CONNECTOR_URL,
18
18
  COWORK_CONNECTOR_LIMIT,
19
19
  COWORK_STANDING_INSTRUCTIONS
20
- } from "./chunk-762CDAJJ.js";
20
+ } from "./chunk-AXJLJJ3M.js";
21
21
 
22
22
  // src/cli/cowork.ts
23
23
  import { readFileSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  UsageError
3
- } from "./chunk-7QLSKOSU.js";
3
+ } from "./chunk-PPY5N2E6.js";
4
4
 
5
5
  // src/cli/flags.ts
6
6
  var normalize = (raw) => raw.replace(/^--?/, "");
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-KZCYHWDF.js";
3
+ } from "./chunk-6MJWYYAS.js";
4
4
  import {
5
5
  writeFileAtomic
6
6
  } from "./chunk-QENTGE75.js";
@@ -0,0 +1,58 @@
1
+ import {
2
+ EXIT
3
+ } from "./chunk-KZERVKTD.js";
4
+
5
+ // src/cli/errors.ts
6
+ var UsageError = class extends Error {
7
+ constructor(hint) {
8
+ super(hint);
9
+ this.hint = hint;
10
+ this.name = "UsageError";
11
+ }
12
+ };
13
+ var UserError = class extends Error {
14
+ constructor(message, next = [], code = EXIT.FAILED) {
15
+ super(message);
16
+ this.next = next;
17
+ this.code = code;
18
+ this.name = "UserError";
19
+ }
20
+ };
21
+ var NetworkError = class extends Error {
22
+ constructor(message) {
23
+ super(message);
24
+ this.name = "NetworkError";
25
+ }
26
+ };
27
+ var AuthError = class extends Error {
28
+ constructor(message) {
29
+ super(message);
30
+ this.name = "AuthError";
31
+ }
32
+ };
33
+ var InputRequiredError = class extends Error {
34
+ constructor(message, flag) {
35
+ super(message);
36
+ this.flag = flag;
37
+ this.name = "InputRequiredError";
38
+ }
39
+ };
40
+ var exitCodeFor = (err) => {
41
+ if (err instanceof UsageError) return EXIT.USAGE;
42
+ if (err instanceof InputRequiredError) return EXIT.INPUT_REQUIRED;
43
+ if (err instanceof AuthError) return EXIT.UNAUTHENTICATED;
44
+ if (err instanceof NetworkError) return EXIT.UNREACHABLE;
45
+ if (err instanceof UserError) return err.code;
46
+ return EXIT.FAILED;
47
+ };
48
+ var messageFor = (err) => {
49
+ if (err instanceof Error) return err.message;
50
+ return String(err);
51
+ };
52
+
53
+ export {
54
+ UsageError,
55
+ NetworkError,
56
+ exitCodeFor,
57
+ messageFor
58
+ };
@@ -3,18 +3,18 @@ import {
3
3
  addGeminiMcpServer,
4
4
  removeGeminiMcpServer,
5
5
  supportedClaudeEvents
6
- } from "./chunk-TDOKDCFH.js";
6
+ } from "./chunk-IF26ZGZ7.js";
7
7
  import {
8
8
  CLAUDE_CODE_AGENT,
9
9
  compatibleToolLookup
10
- } from "./chunk-5JWCWALO.js";
10
+ } from "./chunk-W2IVTHIG.js";
11
11
  import {
12
12
  guardBinary,
13
13
  guardBinaryRefusing,
14
14
  holdBudgetOf,
15
15
  isProtectedByScope,
16
16
  registerHookEntry
17
- } from "./chunk-KZCYHWDF.js";
17
+ } from "./chunk-6MJWYYAS.js";
18
18
  import {
19
19
  HOOK_COMPATIBLE_PROFILES,
20
20
  HOOK_LOCATOR_BINARY,
@@ -26,7 +26,7 @@ import {
26
26
  pusharyMissingReason,
27
27
  refusalOutput,
28
28
  withHookHoldBudget
29
- } from "./chunk-762CDAJJ.js";
29
+ } from "./chunk-AXJLJJ3M.js";
30
30
 
31
31
  // src/claude-config.ts
32
32
  import { join } from "path";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  compatibleConfigFile
3
- } from "./chunk-KQWN7C5C.js";
3
+ } from "./chunk-PUHP4IBA.js";
4
4
  import {
5
5
  hookOwnerOf,
6
6
  hookOwnerOfCommands,
7
7
  liveBridgeProbe,
8
8
  resolveBridgeStub
9
- } from "./chunk-X4ES7QBT.js";
9
+ } from "./chunk-CDQHQAS7.js";
10
10
  import {
11
11
  AGENT_CHOICES
12
- } from "./chunk-75UYYIFJ.js";
12
+ } from "./chunk-XV6S5PWW.js";
13
13
  import {
14
14
  claudeSettings,
15
15
  codexHooksJson,
@@ -18,7 +18,7 @@ import {
18
18
  guardedArgv,
19
19
  pusharyDir,
20
20
  vscodePluginDir
21
- } from "./chunk-KZCYHWDF.js";
21
+ } from "./chunk-6MJWYYAS.js";
22
22
  import {
23
23
  readJsonSafe
24
24
  } from "./chunk-QENTGE75.js";
@@ -29,7 +29,7 @@ import {
29
29
  OPENCODE_APPROVAL_EVENT,
30
30
  hookCompatibleProfile,
31
31
  isRecord
32
- } from "./chunk-762CDAJJ.js";
32
+ } from "./chunk-AXJLJJ3M.js";
33
33
 
34
34
  // src/opencode-plugin.ts
35
35
  var OPENCODE_PLUGIN_MARKER = "pushary-opencode-plugin w1";