pushary 1.8.0 → 1.8.2

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 (106) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +27 -19
  3. package/data/SKILL.md +8 -8
  4. package/data/cowork/SKILL.md +2 -2
  5. package/data/cursor-plugin/README.md +2 -2
  6. package/data/cursor-plugin/scripts/redaction.mjs +4 -2
  7. package/data/cursor-plugin/skills/pushary/SKILL.md +7 -7
  8. package/data/vscode-plugin/README.md +4 -4
  9. package/data/vscode-plugin/scripts/pushary-gate.mjs +2 -2
  10. package/data/vscode-plugin/scripts/redaction.mjs +4 -2
  11. package/data/vscode-plugin/skills/pushary/SKILL.md +7 -7
  12. package/dist/bin/pushary-bell-hook.js +24 -23
  13. package/dist/bin/pushary-bell.js +9 -9
  14. package/dist/bin/pushary-claude.js +27 -26
  15. package/dist/bin/pushary-clean.js +35 -32
  16. package/dist/bin/pushary-codex-bridge.js +23 -21
  17. package/dist/bin/pushary-codex-hook.js +32 -31
  18. package/dist/bin/pushary-codex.js +13 -13
  19. package/dist/bin/pushary-connect.js +13 -13
  20. package/dist/bin/pushary-cowork.js +5 -5
  21. package/dist/bin/pushary-daemon.js +100 -36
  22. package/dist/bin/pushary-disconnect.js +19 -18
  23. package/dist/bin/pushary-doctor.js +41 -38
  24. package/dist/bin/pushary-elicitation-hook.js +26 -25
  25. package/dist/bin/pushary-gemini-bridge.js +18 -15
  26. package/dist/bin/pushary-gemini-hook.js +29 -28
  27. package/dist/bin/pushary-hook.js +33 -32
  28. package/dist/bin/pushary-login.js +12 -12
  29. package/dist/bin/pushary-logout.js +7 -7
  30. package/dist/bin/pushary-mcp.js +9 -9
  31. package/dist/bin/pushary-mode.js +9 -9
  32. package/dist/bin/pushary-notification-hook.js +29 -28
  33. package/dist/bin/pushary-opencode-hook.js +28 -27
  34. package/dist/bin/pushary-permission-denied-hook.js +33 -32
  35. package/dist/bin/pushary-permission-hook.js +32 -31
  36. package/dist/bin/pushary-post-hook.js +29 -28
  37. package/dist/bin/pushary-prompt-hook.js +29 -28
  38. package/dist/bin/pushary-session-end-hook.js +29 -28
  39. package/dist/bin/pushary-session-start-hook.js +33 -32
  40. package/dist/bin/pushary-setup.js +52 -108
  41. package/dist/bin/pushary-stats.js +5 -5
  42. package/dist/bin/pushary-status.js +17 -15
  43. package/dist/bin/pushary-stop-hook.js +29 -28
  44. package/dist/bin/pushary-stopfailure-hook.js +29 -28
  45. package/dist/bin/pushary-suggestions.js +4 -4
  46. package/dist/bin/pushary-transcript-register.js +20 -19
  47. package/dist/bin/pushary-transcripts.js +7 -7
  48. package/dist/bin/pushary-upgrade.js +29 -27
  49. package/dist/bin/pushary-wait.js +9 -9
  50. package/dist/bin/pushary.js +6 -6
  51. package/dist/{chunk-2OY3ZZ5N.js → chunk-2SLCHCVN.js} +3 -3
  52. package/dist/{chunk-E4FJTUH4.js → chunk-35X5UDML.js} +7 -7
  53. package/dist/{chunk-LXQ5FBBD.js → chunk-4A3UQERT.js} +1 -1
  54. package/dist/{chunk-CJVVKOSR.js → chunk-5DGNEUXK.js} +2 -2
  55. package/dist/{chunk-DB3ONZB4.js → chunk-5Y2DY6X4.js} +2 -2
  56. package/dist/{chunk-NQTHFF4W.js → chunk-5YY3IJT4.js} +21 -19
  57. package/dist/{chunk-AXPCESYO.js → chunk-644AEX4T.js} +3 -3
  58. package/dist/{chunk-UI36QSBI.js → chunk-64H5IZZD.js} +2 -2
  59. package/dist/chunk-6ICPEJY5.js +20 -0
  60. package/dist/{chunk-OLQRRFBX.js → chunk-72WOCX22.js} +1 -1
  61. package/dist/{chunk-JU6W3XAU.js → chunk-7ITOAMCD.js} +1 -1
  62. package/dist/{chunk-JYG4B33G.js → chunk-7U7ZWUTR.js} +1 -1
  63. package/dist/{chunk-VQKRG3AC.js → chunk-B3UVRGYP.js} +11 -9
  64. package/dist/{chunk-KVQBWI5T.js → chunk-BDMC5H5L.js} +2 -2
  65. package/dist/{chunk-HZVVNGEW.js → chunk-CB23AO4D.js} +2 -2
  66. package/dist/{chunk-D2FX3EPW.js → chunk-CHMOVJ2M.js} +1 -1
  67. package/dist/{chunk-ZVSKMPBZ.js → chunk-DLEKCAQL.js} +1 -1
  68. package/dist/{chunk-JZTHGAPA.js → chunk-DUA5O6X5.js} +8 -8
  69. package/dist/{chunk-2ABTSGFT.js → chunk-DVW2MYCM.js} +3 -3
  70. package/dist/{chunk-TY4JT7W3.js → chunk-DXBS2EL7.js} +1 -1
  71. package/dist/{chunk-KGDWDSNL.js → chunk-EESPY5DG.js} +2 -2
  72. package/dist/{chunk-WE2J62NC.js → chunk-EIGJYCOE.js} +5 -5
  73. package/dist/{chunk-CULUZTWQ.js → chunk-F6NTWZZC.js} +9 -9
  74. package/dist/{chunk-IPVKH2ST.js → chunk-HMNR7B2F.js} +1 -1
  75. package/dist/{chunk-OKXS7WDZ.js → chunk-HOEB6AKG.js} +1 -1
  76. package/dist/{chunk-R7437YI3.js → chunk-HVDMGDYV.js} +2 -2
  77. package/dist/{chunk-DE4Y6TCC.js → chunk-I3XLHSOC.js} +8 -7
  78. package/dist/{chunk-M5ICYGHT.js → chunk-I4HKMUZQ.js} +3 -3
  79. package/dist/{chunk-M5JDZ45W.js → chunk-INSMZNS7.js} +5 -5
  80. package/dist/{chunk-CVQYGMSR.js → chunk-KB2FTO4O.js} +4 -4
  81. package/dist/{chunk-MDEPU45E.js → chunk-LK2S5XIV.js} +6 -6
  82. package/dist/{chunk-NGDD6TXY.js → chunk-MMVCI6DT.js} +5 -5
  83. package/dist/{chunk-J5TIV3J6.js → chunk-MOTNSXC3.js} +5 -5
  84. package/dist/{chunk-C2WCPBF7.js → chunk-MYHG7PX2.js} +1 -1
  85. package/dist/{chunk-7Z7Q4GGS.js → chunk-N6JJJTPH.js} +6 -3
  86. package/dist/{chunk-EX3GAPA4.js → chunk-NHCUXTEM.js} +1 -1
  87. package/dist/{chunk-Q7E4I6UA.js → chunk-NNWQ5VDB.js} +13 -10
  88. package/dist/{chunk-AHV4LNB5.js → chunk-NOLPURUI.js} +1 -1
  89. package/dist/{chunk-GPEGOGRJ.js → chunk-ON5JW2HP.js} +1 -1
  90. package/dist/{chunk-SIFVFP6T.js → chunk-RIVNNBEK.js} +2 -1
  91. package/dist/{chunk-3EVPNIBE.js → chunk-S2UNQQQS.js} +7 -20
  92. package/dist/{chunk-SLFABHW3.js → chunk-T55H6YEP.js} +2 -2
  93. package/dist/{chunk-P7WQEVWA.js → chunk-TJMAXQ5Q.js} +2 -2
  94. package/dist/{chunk-SAXBC4AZ.js → chunk-UMMCHS6P.js} +1 -1
  95. package/dist/{chunk-A2A2YTMG.js → chunk-UPLV5AJF.js} +1 -1
  96. package/dist/{chunk-MPWXGONV.js → chunk-URNXU3FO.js} +1 -1
  97. package/dist/{chunk-EPCXUP3P.js → chunk-VFFHQC7W.js} +1 -1
  98. package/dist/{chunk-RHR6NARM.js → chunk-W2LJ4O3A.js} +2 -2
  99. package/dist/{chunk-6J2JC2RT.js → chunk-XEGVVU5H.js} +3 -3
  100. package/dist/chunk-XQZEIWAV.js +150 -0
  101. package/dist/{chunk-EYK3GSRH.js → chunk-YNCGXHM4.js} +4 -4
  102. package/dist/{chunk-ZSZSSJCV.js → chunk-ZJYJAD52.js} +1 -1
  103. package/dist/{reapply-CW3MA66V.js → reapply-3UERAKQN.js} +10 -9
  104. package/dist/src/index.js +21 -20
  105. package/package.json +1 -1
  106. package/dist/chunk-HQ6G3B5R.js +0 -59
@@ -1,16 +1,20 @@
1
+ import {
2
+ atLeast,
3
+ formatVersion
4
+ } from "./chunk-6ICPEJY5.js";
1
5
  import {
2
6
  NOTIFICATION_MATCHED_TYPES,
3
7
  POSTTOOLUSE_MIRRORED_TOOLS
4
- } from "./chunk-EPCXUP3P.js";
8
+ } from "./chunk-VFFHQC7W.js";
5
9
  import {
6
10
  isProtectedByScope,
7
11
  registerHookEntry
8
- } from "./chunk-A2A2YTMG.js";
12
+ } from "./chunk-UPLV5AJF.js";
9
13
  import {
10
14
  CLAUDE_PRETOOLUSE_MATCHER,
11
15
  HOOK_BUDGETS,
12
16
  HOOK_LOCATOR_BINARY
13
- } from "./chunk-NQTHFF4W.js";
17
+ } from "./chunk-5YY3IJT4.js";
14
18
 
15
19
  // src/gemini-config.ts
16
20
  var GEMINI_HOOK_BINARY = "pushary-gemini-hook";
@@ -111,20 +115,6 @@ var missingGeminiHookEvents = (settings) => {
111
115
  }).map((definition) => definition.event);
112
116
  };
113
117
 
114
- // src/agent-version.ts
115
- var parseVersion = (raw) => {
116
- const match = raw.match(/(\d+)\.(\d+)\.(\d+)/);
117
- return match ? [Number(match[1]), Number(match[2]), Number(match[3])] : null;
118
- };
119
- var compareVersion = (a, b) => {
120
- for (let index = 0; index < 3; index++) {
121
- if (a[index] !== b[index]) return a[index] < b[index] ? -1 : 1;
122
- }
123
- return 0;
124
- };
125
- var atLeast = (version, floor) => compareVersion(version, floor) >= 0;
126
- var formatVersion = (version) => version.join(".");
127
-
128
118
  // src/claude-events.ts
129
119
  var MIRRORED_TOOLS = POSTTOOLUSE_MIRRORED_TOOLS.join("|");
130
120
  var ESTABLISHED = [1, 0, 0];
@@ -174,9 +164,6 @@ export {
174
164
  removeGeminiSettings,
175
165
  hasGeminiHooks,
176
166
  missingGeminiHookEvents,
177
- parseVersion,
178
- compareVersion,
179
- formatVersion,
180
167
  CLAUDE_HOOK_BINARY,
181
168
  CLAUDE_HOOK_EVENTS,
182
169
  supportedClaudeEvents,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  parseSseMessages
3
- } from "./chunk-M5ICYGHT.js";
3
+ } from "./chunk-I4HKMUZQ.js";
4
4
  import {
5
5
  NPX_LATEST_COMMAND
6
- } from "./chunk-E4FJTUH4.js";
6
+ } from "./chunk-35X5UDML.js";
7
7
 
8
8
  // src/mcp-stdio-bridge.ts
9
9
  var MCP_BRIDGE_BINARY = "pushary-mcp";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveInstallSourceFor
3
- } from "./chunk-DB3ONZB4.js";
3
+ } from "./chunk-5Y2DY6X4.js";
4
4
  import {
5
5
  backupFile,
6
6
  readJsonSafe,
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-T7E75EKA.js";
10
10
  import {
11
11
  configFilePath
12
- } from "./chunk-GPEGOGRJ.js";
12
+ } from "./chunk-ON5JW2HP.js";
13
13
 
14
14
  // src/shell-alias.ts
15
15
  import { homedir } from "os";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getBaseUrl
3
- } from "./chunk-GPEGOGRJ.js";
3
+ } from "./chunk-ON5JW2HP.js";
4
4
 
5
5
  // src/transcript-api.ts
6
6
  var fetchTranscriptRecipients = async (apiKey, baseUrl = getBaseUrl()) => {
@@ -13,7 +13,7 @@ import {
13
13
  isReleaseVersion,
14
14
  ownPackageName,
15
15
  withHookHoldBudget
16
- } from "./chunk-NQTHFF4W.js";
16
+ } from "./chunk-5YY3IJT4.js";
17
17
 
18
18
  // src/npm.ts
19
19
  import { execFileSync, execSync } from "child_process";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  redactSecretsFromContent
3
- } from "./chunk-NQTHFF4W.js";
3
+ } from "./chunk-5YY3IJT4.js";
4
4
 
5
5
  // src/crypto.ts
6
6
  import nacl from "tweetnacl";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PRETOOLUSE_GATED_TOOLS
3
- } from "./chunk-NQTHFF4W.js";
3
+ } from "./chunk-5YY3IJT4.js";
4
4
 
5
5
  // src/claude-tools.ts
6
6
  var POSTTOOLUSE_MIRROR_ONLY_TOOLS = ["TodoWrite", "Task", "WebFetch", "WebSearch"];
@@ -6,10 +6,10 @@ import {
6
6
  codexHooksJsonIn,
7
7
  isPusharyCodexCommand,
8
8
  resolvePathBinary
9
- } from "./chunk-A2A2YTMG.js";
9
+ } from "./chunk-UPLV5AJF.js";
10
10
  import {
11
11
  getPackageVersion
12
- } from "./chunk-NQTHFF4W.js";
12
+ } from "./chunk-5YY3IJT4.js";
13
13
 
14
14
  // src/codex-app-server.ts
15
15
  import { existsSync, realpathSync } from "fs";
@@ -2,17 +2,17 @@ import {
2
2
  CLAUDE_HOOK_EVENTS,
3
3
  GEMINI_HOOK_EVENTS,
4
4
  hasGeminiHooks
5
- } from "./chunk-3EVPNIBE.js";
5
+ } from "./chunk-S2UNQQQS.js";
6
6
  import {
7
7
  CODEX_HOOK_EVENTS,
8
8
  hasCodexHooks,
9
9
  holdBudgetOf
10
- } from "./chunk-A2A2YTMG.js";
10
+ } from "./chunk-UPLV5AJF.js";
11
11
  import {
12
12
  CURSOR_GATE_EVENTS,
13
13
  HOOK_LOCATOR_BINARY,
14
14
  hookCommandHoldBudget
15
- } from "./chunk-NQTHFF4W.js";
15
+ } from "./chunk-5YY3IJT4.js";
16
16
 
17
17
  // src/diagnostics/wiring.ts
18
18
  var record = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : null;
@@ -0,0 +1,150 @@
1
+ import {
2
+ realpath
3
+ } from "./chunk-RIVNNBEK.js";
4
+ import {
5
+ resolveGlobalBinary,
6
+ resolveGlobalPackageVersion,
7
+ resolvePackageVersionFromBinary,
8
+ resolvePathBinary
9
+ } from "./chunk-UPLV5AJF.js";
10
+ import {
11
+ MANAGED_PROVIDERS
12
+ } from "./chunk-5YY3IJT4.js";
13
+
14
+ // src/setup/codex-install.ts
15
+ var NATIVE_BINARY_MIN_BYTES = 20 * 1024 * 1024;
16
+ var packageRootFor = (probe, binPath) => {
17
+ const binDir = probe.dirname(binPath);
18
+ const root = probe.dirname(binDir);
19
+ return probe.join(root, "bin") === binDir && probe.exists(probe.join(root, "package.json")) ? root : null;
20
+ };
21
+ var holdsNativeBinary = (probe, dir, depth = 0) => {
22
+ if (depth > 4) return false;
23
+ const entries = probe.listDir(dir);
24
+ if (!entries) return false;
25
+ return entries.some((entry) => {
26
+ const path = probe.join(dir, entry);
27
+ const size = probe.fileSize(path);
28
+ if (size !== null) return size >= NATIVE_BINARY_MIN_BYTES;
29
+ return holdsNativeBinary(probe, path, depth + 1);
30
+ });
31
+ };
32
+ var platformPackages = (probe, packageRoot) => {
33
+ const scopes = [probe.join(packageRoot, "node_modules", "@openai"), probe.dirname(packageRoot)];
34
+ return scopes.flatMap(
35
+ (scope) => (probe.listDir(scope) ?? []).filter((entry) => entry.startsWith("codex-")).map((entry) => probe.join(scope, entry))
36
+ );
37
+ };
38
+ var checkCodexInstall = (probe) => {
39
+ const onPath = probe.resolveOnPath();
40
+ if (!onPath) return { kind: "unknown" };
41
+ const packageRoot = packageRootFor(probe, probe.realpath(onPath) ?? onPath);
42
+ if (!packageRoot) return { kind: "unknown" };
43
+ const vendors = platformPackages(probe, packageRoot).map((pkg) => probe.join(pkg, "vendor")).filter((vendor) => probe.exists(vendor));
44
+ if (vendors.length === 0) return { kind: "unknown" };
45
+ if (vendors.some((vendor) => holdsNativeBinary(probe, vendor))) return { kind: "ok" };
46
+ return { kind: "binary-missing", vendorDir: vendors[0] };
47
+ };
48
+
49
+ // src/setup/codex-install-probe.ts
50
+ import { existsSync, readdirSync, statSync } from "fs";
51
+ import { dirname, join } from "path";
52
+ var listDir = (path) => {
53
+ try {
54
+ return readdirSync(path);
55
+ } catch {
56
+ return null;
57
+ }
58
+ };
59
+ var fileSize = (path) => {
60
+ try {
61
+ const stat = statSync(path);
62
+ return stat.isFile() ? stat.size : null;
63
+ } catch {
64
+ return null;
65
+ }
66
+ };
67
+ var nodeCodexInstallProbe = (resolveOnPath) => ({
68
+ resolveOnPath,
69
+ realpath,
70
+ exists: existsSync,
71
+ listDir,
72
+ fileSize,
73
+ join,
74
+ dirname
75
+ });
76
+ var codexInstallHealthAt = (binary) => checkCodexInstall(nodeCodexInstallProbe(() => binary));
77
+
78
+ // src/live-capabilities.ts
79
+ var CLAUDE_BRIDGE_CAPABILITY = "claude-bridge";
80
+ var CLAUDE_RESUME_CAPABILITY = "claude-resume";
81
+ var CODEX_BRIDGE_CAPABILITY = "codex-bridge";
82
+ var CODEX_RESUME_CAPABILITY = "codex-resume";
83
+ var GEMINI_BRIDGE_CAPABILITY = "gemini-bridge";
84
+ var GEMINI_RESUME_CAPABILITY = "gemini-resume";
85
+ var GEMINI_BRIDGE_MIN_VERSION = [0, 40, 0];
86
+ var version = (raw) => {
87
+ const match = raw?.match(/^(\d+)\.(\d+)\.(\d+)/);
88
+ return match ? [Number(match[1]), Number(match[2]), Number(match[3])] : null;
89
+ };
90
+ var geminiLiveCapabilities = (rawVersion) => {
91
+ const installed = version(rawVersion);
92
+ if (!installed) return [];
93
+ for (let index = 0; index < GEMINI_BRIDGE_MIN_VERSION.length; index++) {
94
+ if (installed[index] > GEMINI_BRIDGE_MIN_VERSION[index]) break;
95
+ if (installed[index] < GEMINI_BRIDGE_MIN_VERSION[index]) return [];
96
+ }
97
+ return [GEMINI_BRIDGE_CAPABILITY, GEMINI_RESUME_CAPABILITY];
98
+ };
99
+ var providerLiveCapabilities = (probe) => [
100
+ ...probe.claude ? [CLAUDE_BRIDGE_CAPABILITY, CLAUDE_RESUME_CAPABILITY] : [],
101
+ ...probe.codex ? [CODEX_BRIDGE_CAPABILITY, CODEX_RESUME_CAPABILITY] : [],
102
+ ...geminiLiveCapabilities(probe.geminiVersion)
103
+ ];
104
+ var PROVIDER_BY_BRIDGE_CAPABILITY = [
105
+ [CLAUDE_BRIDGE_CAPABILITY, "claude"],
106
+ [CODEX_BRIDGE_CAPABILITY, "codex"],
107
+ [GEMINI_BRIDGE_CAPABILITY, "gemini"]
108
+ ];
109
+ var launchableProviders = (capabilities) => PROVIDER_BY_BRIDGE_CAPABILITY.filter(([capability]) => capabilities.includes(capability)).map(([, provider]) => provider);
110
+ var hasSpawnProvider = (capabilities) => launchableProviders(capabilities).length > 0;
111
+ var resolveControlPolicy = (input) => {
112
+ if (input.mode === "off") return "disabled";
113
+ if (input.mode === null && !input.servicePresent) return "preserve-absent";
114
+ if (input.providerAvailable && input.managerAvailable) return "enabled";
115
+ return input.servicePresent ? "legacy" : "unsupported";
116
+ };
117
+ var resolveProviderBinary = (provider, platform = process.platform) => platform === "win32" ? resolveGlobalBinary(provider) ?? resolvePathBinary(provider, platform) : resolvePathBinary(provider, platform) ?? resolveGlobalBinary(provider);
118
+ var codexBinaryIsBroken = (binary) => codexInstallHealthAt(binary).kind === "binary-missing";
119
+ var detectCapabilities = (providers, codexCanStart) => {
120
+ const enabled = new Set(providers);
121
+ const binaryFor = (provider) => enabled.has(provider) ? resolveProviderBinary(provider) : void 0;
122
+ const codexBin = binaryFor("codex");
123
+ const geminiBin = binaryFor("gemini");
124
+ return providerLiveCapabilities({
125
+ claude: binaryFor("claude") !== void 0,
126
+ codex: codexBin !== void 0 && codexCanStart(codexBin),
127
+ geminiVersion: geminiBin ? resolvePackageVersionFromBinary(geminiBin, "@google/gemini-cli") ?? resolveGlobalPackageVersion("@google/gemini-cli") : void 0
128
+ });
129
+ };
130
+ var anyInstalledCodex = () => true;
131
+ var codexWithItsProgram = (binary) => !codexBinaryIsBroken(binary);
132
+ var detectProviderLiveCapabilities = (providers = MANAGED_PROVIDERS) => detectCapabilities(providers, anyInstalledCodex);
133
+ var detectLaunchableProviderCapabilities = (providers = MANAGED_PROVIDERS) => detectCapabilities(providers, codexWithItsProgram);
134
+ var SPAWN_CAPABILITY = "spawn";
135
+ var launchAdvertisement = (launchable) => hasSpawnProvider(launchable) ? [SPAWN_CAPABILITY, ...launchable] : launchable;
136
+ var expectedLaunchCapabilities = (providers = MANAGED_PROVIDERS) => launchAdvertisement(detectLaunchableProviderCapabilities(providers));
137
+
138
+ export {
139
+ checkCodexInstall,
140
+ nodeCodexInstallProbe,
141
+ launchableProviders,
142
+ hasSpawnProvider,
143
+ resolveControlPolicy,
144
+ resolveProviderBinary,
145
+ codexBinaryIsBroken,
146
+ detectProviderLiveCapabilities,
147
+ detectLaunchableProviderCapabilities,
148
+ launchAdvertisement,
149
+ expectedLaunchCapabilities
150
+ };
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  AGENT_CHOICES
3
- } from "./chunk-ZVSKMPBZ.js";
3
+ } from "./chunk-DLEKCAQL.js";
4
4
  import {
5
5
  isBridgeLocator
6
- } from "./chunk-C2WCPBF7.js";
6
+ } from "./chunk-MYHG7PX2.js";
7
7
  import {
8
8
  pusharyHookExecutable
9
- } from "./chunk-6J2JC2RT.js";
9
+ } from "./chunk-XEGVVU5H.js";
10
10
  import {
11
11
  BELL_HOOK_BINARY
12
- } from "./chunk-OKXS7WDZ.js";
12
+ } from "./chunk-HOEB6AKG.js";
13
13
 
14
14
  // src/setup/hook-ownership.ts
15
15
  var commandsIn = (value) => {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-A2A2YTMG.js";
3
+ } from "./chunk-UPLV5AJF.js";
4
4
  import {
5
5
  readJsonSafe
6
6
  } from "./chunk-T7E75EKA.js";
@@ -9,17 +9,18 @@ import {
9
9
  reapplyGeminiSettings,
10
10
  reapplyVsCodePlugin,
11
11
  repairCodexHolds
12
- } from "./chunk-VQKRG3AC.js";
13
- import "./chunk-SIFVFP6T.js";
14
- import "./chunk-RHR6NARM.js";
15
- import "./chunk-AXPCESYO.js";
16
- import "./chunk-6J2JC2RT.js";
17
- import "./chunk-3EVPNIBE.js";
12
+ } from "./chunk-B3UVRGYP.js";
13
+ import "./chunk-W2LJ4O3A.js";
14
+ import "./chunk-644AEX4T.js";
15
+ import "./chunk-RIVNNBEK.js";
16
+ import "./chunk-XEGVVU5H.js";
17
+ import "./chunk-S2UNQQQS.js";
18
18
  import "./chunk-XHKBHWLX.js";
19
- import "./chunk-EPCXUP3P.js";
20
- import "./chunk-A2A2YTMG.js";
19
+ import "./chunk-6ICPEJY5.js";
20
+ import "./chunk-VFFHQC7W.js";
21
+ import "./chunk-UPLV5AJF.js";
21
22
  import "./chunk-T7E75EKA.js";
22
- import "./chunk-NQTHFF4W.js";
23
+ import "./chunk-5YY3IJT4.js";
23
24
  export {
24
25
  ensureCodexTrustAfterReapply,
25
26
  inspectConfiguredManagedProviders,
package/dist/src/index.js CHANGED
@@ -1,15 +1,16 @@
1
1
  import {
2
2
  handlePreToolUse
3
- } from "../chunk-Q7E4I6UA.js";
4
- import "../chunk-J5TIV3J6.js";
5
- import "../chunk-AXPCESYO.js";
6
- import "../chunk-CJVVKOSR.js";
7
- import "../chunk-JU6W3XAU.js";
3
+ } from "../chunk-NNWQ5VDB.js";
4
+ import "../chunk-MOTNSXC3.js";
5
+ import "../chunk-644AEX4T.js";
6
+ import "../chunk-5DGNEUXK.js";
7
+ import "../chunk-7ITOAMCD.js";
8
8
  import "../chunk-5OP5MQI7.js";
9
- import "../chunk-3EVPNIBE.js";
9
+ import "../chunk-S2UNQQQS.js";
10
10
  import {
11
11
  fetchAccountPublicKey
12
- } from "../chunk-SAXBC4AZ.js";
12
+ } from "../chunk-UMMCHS6P.js";
13
+ import "../chunk-6ICPEJY5.js";
13
14
  import {
14
15
  fetchModeOverride,
15
16
  fetchModeState,
@@ -18,33 +19,33 @@ import {
18
19
  handlePostToolUse,
19
20
  handleStop,
20
21
  reportEvent
21
- } from "../chunk-CULUZTWQ.js";
22
+ } from "../chunk-F6NTWZZC.js";
22
23
  import "../chunk-N6IOSZOE.js";
23
- import "../chunk-EPCXUP3P.js";
24
+ import "../chunk-VFFHQC7W.js";
24
25
  import {
25
26
  askUser,
26
27
  cancelQuestion,
27
28
  waitForAnswer
28
- } from "../chunk-NGDD6TXY.js";
29
- import "../chunk-CVQYGMSR.js";
29
+ } from "../chunk-MMVCI6DT.js";
30
+ import "../chunk-KB2FTO4O.js";
30
31
  import "../chunk-POFBE6ZY.js";
31
- import "../chunk-M5ICYGHT.js";
32
- import "../chunk-2ABTSGFT.js";
33
- import "../chunk-2OY3ZZ5N.js";
34
- import "../chunk-LXQ5FBBD.js";
32
+ import "../chunk-I4HKMUZQ.js";
33
+ import "../chunk-DVW2MYCM.js";
34
+ import "../chunk-2SLCHCVN.js";
35
+ import "../chunk-4A3UQERT.js";
35
36
  import "../chunk-7QLSKOSU.js";
36
37
  import "../chunk-KZERVKTD.js";
37
- import "../chunk-DB3ONZB4.js";
38
- import "../chunk-A2A2YTMG.js";
38
+ import "../chunk-5Y2DY6X4.js";
39
+ import "../chunk-UPLV5AJF.js";
39
40
  import "../chunk-T7E75EKA.js";
40
41
  import {
41
42
  getApiKey,
42
43
  getBaseUrl
43
- } from "../chunk-GPEGOGRJ.js";
44
- import "../chunk-E4FJTUH4.js";
44
+ } from "../chunk-ON5JW2HP.js";
45
+ import "../chunk-35X5UDML.js";
45
46
  import {
46
47
  resolvePolicy
47
- } from "../chunk-NQTHFF4W.js";
48
+ } from "../chunk-5YY3IJT4.js";
48
49
  export {
49
50
  askUser,
50
51
  cancelQuestion,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pushary",
3
- "version": "1.8.0",
3
+ "version": "1.8.2",
4
4
  "description": "Permission hooks for AI coding agents: route tool approvals through Pushary push notifications",
5
5
  "keywords": [
6
6
  "pushary",
@@ -1,59 +0,0 @@
1
- import {
2
- resolveBinary,
3
- resolveGlobalPackageVersion,
4
- resolvePackageVersionFromBinary
5
- } from "./chunk-A2A2YTMG.js";
6
- import {
7
- MANAGED_PROVIDERS
8
- } from "./chunk-NQTHFF4W.js";
9
-
10
- // src/live-capabilities.ts
11
- var CLAUDE_BRIDGE_CAPABILITY = "claude-bridge";
12
- var CLAUDE_RESUME_CAPABILITY = "claude-resume";
13
- var CODEX_BRIDGE_CAPABILITY = "codex-bridge";
14
- var CODEX_RESUME_CAPABILITY = "codex-resume";
15
- var GEMINI_BRIDGE_CAPABILITY = "gemini-bridge";
16
- var GEMINI_RESUME_CAPABILITY = "gemini-resume";
17
- var GEMINI_BRIDGE_MIN_VERSION = [0, 40, 0];
18
- var version = (raw) => {
19
- const match = raw?.match(/^(\d+)\.(\d+)\.(\d+)/);
20
- return match ? [Number(match[1]), Number(match[2]), Number(match[3])] : null;
21
- };
22
- var geminiLiveCapabilities = (rawVersion) => {
23
- const installed = version(rawVersion);
24
- if (!installed) return [];
25
- for (let index = 0; index < GEMINI_BRIDGE_MIN_VERSION.length; index++) {
26
- if (installed[index] > GEMINI_BRIDGE_MIN_VERSION[index]) break;
27
- if (installed[index] < GEMINI_BRIDGE_MIN_VERSION[index]) return [];
28
- }
29
- return [GEMINI_BRIDGE_CAPABILITY, GEMINI_RESUME_CAPABILITY];
30
- };
31
- var providerLiveCapabilities = (probe) => [
32
- ...probe.claude ? [CLAUDE_BRIDGE_CAPABILITY, CLAUDE_RESUME_CAPABILITY] : [],
33
- ...probe.codex ? [CODEX_BRIDGE_CAPABILITY, CODEX_RESUME_CAPABILITY] : [],
34
- ...geminiLiveCapabilities(probe.geminiVersion)
35
- ];
36
- var hasSpawnProvider = (capabilities) => capabilities.some(
37
- (capability) => capability === CLAUDE_BRIDGE_CAPABILITY || capability === CODEX_BRIDGE_CAPABILITY || capability === GEMINI_BRIDGE_CAPABILITY
38
- );
39
- var resolveControlPolicy = (input) => {
40
- if (input.mode === "off") return "disabled";
41
- if (input.mode === null && !input.servicePresent) return "preserve-absent";
42
- if (input.providerAvailable && input.managerAvailable) return "enabled";
43
- return input.servicePresent ? "legacy" : "unsupported";
44
- };
45
- var detectProviderLiveCapabilities = (providers = MANAGED_PROVIDERS) => {
46
- const enabled = new Set(providers);
47
- const geminiBin = enabled.has("gemini") ? resolveBinary("gemini") : void 0;
48
- return providerLiveCapabilities({
49
- claude: enabled.has("claude") && resolveBinary("claude") !== void 0,
50
- codex: enabled.has("codex") && resolveBinary("codex") !== void 0,
51
- geminiVersion: geminiBin ? resolvePackageVersionFromBinary(geminiBin, "@google/gemini-cli") ?? resolveGlobalPackageVersion("@google/gemini-cli") : void 0
52
- });
53
- };
54
-
55
- export {
56
- hasSpawnProvider,
57
- resolveControlPolicy,
58
- detectProviderLiveCapabilities
59
- };