@pushary/agent-hooks 0.88.1 → 0.89.1

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 (58) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +7 -2
  3. package/dist/bin/pushary-bell-hook.js +4 -4
  4. package/dist/bin/pushary-bell.js +5 -5
  5. package/dist/bin/pushary-claude.js +8 -8
  6. package/dist/bin/pushary-clean.js +6 -6
  7. package/dist/bin/pushary-codex-bridge.js +5 -5
  8. package/dist/bin/pushary-codex-hook.js +5 -5
  9. package/dist/bin/pushary-codex.js +4 -4
  10. package/dist/bin/pushary-connect.js +6 -6
  11. package/dist/bin/pushary-daemon.js +4 -4
  12. package/dist/bin/pushary-disconnect.js +4 -4
  13. package/dist/bin/pushary-doctor.js +13 -13
  14. package/dist/bin/pushary-elicitation-hook.js +48 -28
  15. package/dist/bin/pushary-gemini-bridge.js +5 -5
  16. package/dist/bin/pushary-gemini-hook.js +5 -5
  17. package/dist/bin/pushary-hook.js +6 -6
  18. package/dist/bin/pushary-login.js +4 -4
  19. package/dist/bin/pushary-logout.js +4 -4
  20. package/dist/bin/pushary-mode.js +3 -3
  21. package/dist/bin/pushary-notification-hook.js +4 -4
  22. package/dist/bin/pushary-opencode-hook.js +5 -5
  23. package/dist/bin/pushary-permission-denied-hook.js +6 -6
  24. package/dist/bin/pushary-permission-hook.js +6 -6
  25. package/dist/bin/pushary-post-hook.js +4 -4
  26. package/dist/bin/pushary-prompt-hook.js +4 -4
  27. package/dist/bin/pushary-session-end-hook.js +4 -4
  28. package/dist/bin/pushary-session-start-hook.js +4 -4
  29. package/dist/bin/pushary-setup.js +21 -19
  30. package/dist/bin/pushary-stats.js +2 -2
  31. package/dist/bin/pushary-status.js +5 -5
  32. package/dist/bin/pushary-stop-hook.js +4 -4
  33. package/dist/bin/pushary-stopfailure-hook.js +4 -4
  34. package/dist/bin/pushary-upgrade.js +5 -5
  35. package/dist/bin/pushary-wait.js +3 -3
  36. package/dist/{chunk-DLI5IXSD.js → chunk-475T3XIO.js} +1 -1
  37. package/dist/{chunk-SUZF64M4.js → chunk-4VYUMYWD.js} +2 -2
  38. package/dist/{chunk-OSE7X44J.js → chunk-6XSC6Z2K.js} +3 -3
  39. package/dist/{chunk-F3ZDPL6O.js → chunk-7TS2G4QG.js} +1 -1
  40. package/dist/{chunk-WPDMGNQR.js → chunk-B7JE4XHD.js} +1 -1
  41. package/dist/{chunk-LNAQWWBP.js → chunk-C623LWJR.js} +1 -1
  42. package/dist/{chunk-WFFPWJN6.js → chunk-I5L6SK5V.js} +1 -1
  43. package/dist/{chunk-4FANZF2L.js → chunk-K42SZKYF.js} +1 -1
  44. package/dist/{chunk-Q6MK2YKV.js → chunk-L4C2JXJS.js} +12 -3
  45. package/dist/{chunk-EKNFTIKO.js → chunk-LALHWDWL.js} +1 -1
  46. package/dist/{chunk-LXTX5CT7.js → chunk-LGXTBUT4.js} +1 -1
  47. package/dist/{chunk-O7P7O4VY.js → chunk-LUCFN47K.js} +2 -2
  48. package/dist/{chunk-4KMWTOBK.js → chunk-O5B7EK5U.js} +1 -1
  49. package/dist/{chunk-AJ4EMW5D.js → chunk-OFRNZWC4.js} +1 -1
  50. package/dist/{chunk-6GBQDZ7K.js → chunk-PMHTCDEO.js} +1 -1
  51. package/dist/{chunk-ZPRF4YLA.js → chunk-SS72Z7FV.js} +1 -1
  52. package/dist/{chunk-SHVW5KFR.js → chunk-T3LRWZKI.js} +1 -1
  53. package/dist/{chunk-U65EIMUJ.js → chunk-VI27GQKE.js} +4 -4
  54. package/dist/{chunk-FRH2QIMY.js → chunk-VKVHY5HD.js} +1 -1
  55. package/dist/{chunk-PXEFENML.js → chunk-VZKXBFUA.js} +1 -1
  56. package/dist/{chunk-U44C3ULB.js → chunk-ZYPS2XMT.js} +1 -1
  57. package/dist/src/index.js +6 -6
  58. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.89.0
4
+
5
+ ### Hermes approvals go to the phone, and setup wires it
6
+
7
+ `setup --agents hermes` now selects Pushary as the Hermes approval transport,
8
+ with `transport_fallback: builtin`. Hermes owns the timeout (300s) and the
9
+ once/session/always/deny choices, and persists the last two, so a repeated
10
+ approval can become a standing rule instead of being asked forever. The
11
+ fallback is what makes selecting it safe: a missing key, an unreachable
12
+ Pushary, or no connected device falls back to the terminal prompt rather than
13
+ blocking work.
14
+
15
+ The note explaining why setup writes `~/.hermes/config.yaml` directly rather
16
+ than running `hermes plugins enable` was half wrong. Current Hermes does
17
+ resolve pip-installed plugins in both `list` and `enable`; the reason to write
18
+ the file is the rule against executing an agent's binary, and nothing else.
19
+
20
+ ### `pushary upgrade` named a package that does not exist
21
+
22
+ It printed `pip install --upgrade pushary-hermes`. That package is not on PyPI.
23
+ The real one is `hermes-plugin-pushary`, and the upgrade path for it is setup,
24
+ which installs into the interpreter Hermes actually runs in. Now points there,
25
+ like every other agent in that list.
26
+
3
27
  ## 0.88.1
4
28
 
5
29
  ### One install, whichever surface writes it
package/README.md CHANGED
@@ -77,13 +77,18 @@ talking. Set `PUSHARY_BELL_QUIET=1` if you would rather it never mentioned it.
77
77
 
78
78
  ## Setup
79
79
 
80
- You need an API key. Sign up at [pushary.com](https://pushary.com/sign-up?from=npm), then run:
80
+ Run setup:
81
81
 
82
82
  ```bash
83
83
  npx @pushary/agent-hooks@latest setup
84
84
  ```
85
85
 
86
- The wizard detects which agents you have installed and configures each one. To skip the prompts:
86
+ It shows a QR code and short link. Open either in the Pushary app, check that the
87
+ fingerprint matches, and approve. Setup then stores the credential and configures
88
+ the agents it detects. If this machine already has a key, setup reuses it and skips
89
+ pairing.
90
+
91
+ For CI or another non-interactive install, pass an existing key explicitly:
87
92
 
88
93
  ```bash
89
94
  npx @pushary/agent-hooks@latest setup --key pk_xxx.sk_xxx --skip-phone
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handleBell
4
- } from "../chunk-WPDMGNQR.js";
4
+ } from "../chunk-B7JE4XHD.js";
5
5
  import {
6
6
  readHookInput
7
7
  } from "../chunk-6CUUA7HO.js";
8
- import "../chunk-EKNFTIKO.js";
8
+ import "../chunk-LALHWDWL.js";
9
9
  import "../chunk-BC3VCZ3E.js";
10
10
  import "../chunk-6MTNS63X.js";
11
- import "../chunk-AJ4EMW5D.js";
11
+ import "../chunk-OFRNZWC4.js";
12
12
  import "../chunk-2UMNXADU.js";
13
- import "../chunk-Q6MK2YKV.js";
13
+ import "../chunk-L4C2JXJS.js";
14
14
 
15
15
  // bin/pushary-bell-hook.ts
16
16
  var main = async () => {
@@ -5,19 +5,19 @@ import {
5
5
  liveAgentCount,
6
6
  ring,
7
7
  upgradeThreshold
8
- } from "../chunk-WPDMGNQR.js";
8
+ } from "../chunk-B7JE4XHD.js";
9
9
  import {
10
10
  guardBinary
11
11
  } from "../chunk-AIGDBRIJ.js";
12
12
  import "../chunk-PZA7G4CN.js";
13
13
  import {
14
14
  claudeSettings
15
- } from "../chunk-FRH2QIMY.js";
15
+ } from "../chunk-VKVHY5HD.js";
16
16
  import "../chunk-GIRT7677.js";
17
17
  import {
18
18
  createIo
19
19
  } from "../chunk-5RUIFDTP.js";
20
- import "../chunk-EKNFTIKO.js";
20
+ import "../chunk-LALHWDWL.js";
21
21
  import {
22
22
  parseFlags
23
23
  } from "../chunk-GMXKITVA.js";
@@ -31,13 +31,13 @@ import {
31
31
  readJsonSafe,
32
32
  writeJsonAtomic
33
33
  } from "../chunk-6MTNS63X.js";
34
- import "../chunk-AJ4EMW5D.js";
34
+ import "../chunk-OFRNZWC4.js";
35
35
  import "../chunk-7QLSKOSU.js";
36
36
  import {
37
37
  EXIT
38
38
  } from "../chunk-KZERVKTD.js";
39
39
  import "../chunk-2UMNXADU.js";
40
- import "../chunk-Q6MK2YKV.js";
40
+ import "../chunk-L4C2JXJS.js";
41
41
 
42
42
  // src/bell/install.ts
43
43
  import { join } from "path";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ensureDaemonRunning
4
- } from "../chunk-4FANZF2L.js";
4
+ } from "../chunk-K42SZKYF.js";
5
5
  import {
6
6
  buildTranscriptRecords,
7
7
  decodePublicKey,
@@ -9,17 +9,17 @@ import {
9
9
  generateSessionKey,
10
10
  uploadTranscriptRecords,
11
11
  wrapSessionKey
12
- } from "../chunk-6GBQDZ7K.js";
12
+ } from "../chunk-PMHTCDEO.js";
13
13
  import {
14
14
  startProcessOwnership,
15
15
  withSpawnProcessOwnership
16
- } from "../chunk-U44C3ULB.js";
16
+ } from "../chunk-ZYPS2XMT.js";
17
17
  import {
18
18
  needsShell,
19
19
  spawnClaude
20
20
  } from "../chunk-XHKBHWLX.js";
21
21
  import "../chunk-PZA7G4CN.js";
22
- import "../chunk-FRH2QIMY.js";
22
+ import "../chunk-VKVHY5HD.js";
23
23
  import {
24
24
  isDeferAnswer
25
25
  } from "../chunk-YHG74UFF.js";
@@ -29,7 +29,7 @@ import {
29
29
  getPolicy,
30
30
  repoKeyFor,
31
31
  reportEvent
32
- } from "../chunk-OSE7X44J.js";
32
+ } from "../chunk-6XSC6Z2K.js";
33
33
  import {
34
34
  askUser,
35
35
  cancelQuestion,
@@ -39,7 +39,7 @@ import {
39
39
  deriveToolTarget,
40
40
  describeToolCall,
41
41
  scopePathFor
42
- } from "../chunk-LXTX5CT7.js";
42
+ } from "../chunk-LGXTBUT4.js";
43
43
  import {
44
44
  getMachineId
45
45
  } from "../chunk-RN3NOEJF.js";
@@ -47,7 +47,7 @@ import "../chunk-DINDL2CF.js";
47
47
  import "../chunk-6MTNS63X.js";
48
48
  import "../chunk-BSZYIAZL.js";
49
49
  import "../chunk-SAF6HGAA.js";
50
- import "../chunk-AJ4EMW5D.js";
50
+ import "../chunk-OFRNZWC4.js";
51
51
  import "../chunk-7QLSKOSU.js";
52
52
  import "../chunk-KZERVKTD.js";
53
53
  import {
@@ -57,7 +57,7 @@ import {
57
57
  import {
58
58
  KILL_REASON,
59
59
  resolveGate
60
- } from "../chunk-Q6MK2YKV.js";
60
+ } from "../chunk-L4C2JXJS.js";
61
61
 
62
62
  // src/wrapper/claudeBinary.ts
63
63
  import { statSync } from "fs";
@@ -4,13 +4,13 @@ import {
4
4
  shortenHome,
5
5
  unregisterPluginLocation,
6
6
  vscodeSettingsTargets
7
- } from "../chunk-O7P7O4VY.js";
8
- import "../chunk-4KMWTOBK.js";
7
+ } from "../chunk-LUCFN47K.js";
8
+ import "../chunk-O5B7EK5U.js";
9
9
  import {
10
10
  removeClaudeMcpServers,
11
11
  removeGeminiSettings,
12
12
  removePusharySettings
13
- } from "../chunk-F3ZDPL6O.js";
13
+ } from "../chunk-7TS2G4QG.js";
14
14
  import "../chunk-ATBKJNWS.js";
15
15
  import "../chunk-AIGDBRIJ.js";
16
16
  import {
@@ -35,9 +35,9 @@ import {
35
35
  removeCodexHookTrust,
36
36
  removeCodexHooks,
37
37
  vscodePluginDir
38
- } from "../chunk-FRH2QIMY.js";
38
+ } from "../chunk-VKVHY5HD.js";
39
39
  import "../chunk-GIRT7677.js";
40
- import "../chunk-LXTX5CT7.js";
40
+ import "../chunk-LGXTBUT4.js";
41
41
  import {
42
42
  rejectUnknownFlags
43
43
  } from "../chunk-GMXKITVA.js";
@@ -55,7 +55,7 @@ import {
55
55
  } from "../chunk-KZERVKTD.js";
56
56
  import {
57
57
  CURSOR_GATE_EVENTS
58
- } from "../chunk-Q6MK2YKV.js";
58
+ } from "../chunk-L4C2JXJS.js";
59
59
 
60
60
  // bin/pushary-clean.ts
61
61
  import { existsSync, readFileSync, copyFileSync, readdirSync } from "fs";
@@ -6,19 +6,19 @@ import {
6
6
  postLiveSession,
7
7
  postLiveSessionUntilAccepted,
8
8
  startLiveSessionHeartbeat
9
- } from "../chunk-LNAQWWBP.js";
10
- import "../chunk-6GBQDZ7K.js";
9
+ } from "../chunk-C623LWJR.js";
10
+ import "../chunk-PMHTCDEO.js";
11
11
  import {
12
12
  startProcessOwnership,
13
13
  withSpawnProcessOwnership
14
- } from "../chunk-U44C3ULB.js";
14
+ } from "../chunk-ZYPS2XMT.js";
15
15
  import {
16
16
  spawnClaude
17
17
  } from "../chunk-XHKBHWLX.js";
18
18
  import {
19
19
  resolveBinary
20
20
  } from "../chunk-PZA7G4CN.js";
21
- import "../chunk-FRH2QIMY.js";
21
+ import "../chunk-VKVHY5HD.js";
22
22
  import "../chunk-GIRT7677.js";
23
23
  import {
24
24
  getMachineId
@@ -28,7 +28,7 @@ import {
28
28
  getApiKey,
29
29
  getBaseUrl
30
30
  } from "../chunk-2UMNXADU.js";
31
- import "../chunk-Q6MK2YKV.js";
31
+ import "../chunk-L4C2JXJS.js";
32
32
 
33
33
  // bin/pushary-codex-bridge.ts
34
34
  import { existsSync } from "fs";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  isGatingMoment,
4
4
  recordKeylessMoment
5
- } from "../chunk-PXEFENML.js";
5
+ } from "../chunk-VZKXBFUA.js";
6
6
  import {
7
7
  readHookInput
8
8
  } from "../chunk-6CUUA7HO.js";
@@ -34,7 +34,7 @@ import {
34
34
  toCodexWire,
35
35
  toPolicyLookup,
36
36
  toPolicyLookups
37
- } from "../chunk-OSE7X44J.js";
37
+ } from "../chunk-6XSC6Z2K.js";
38
38
  import {
39
39
  DEFAULT_SESSION,
40
40
  askUser,
@@ -49,13 +49,13 @@ import {
49
49
  deriveToolTarget,
50
50
  describeToolCall,
51
51
  scopePathFor
52
- } from "../chunk-LXTX5CT7.js";
52
+ } from "../chunk-LGXTBUT4.js";
53
53
  import {
54
54
  getMachineId
55
55
  } from "../chunk-RN3NOEJF.js";
56
56
  import "../chunk-BSZYIAZL.js";
57
57
  import "../chunk-SAF6HGAA.js";
58
- import "../chunk-AJ4EMW5D.js";
58
+ import "../chunk-OFRNZWC4.js";
59
59
  import "../chunk-7QLSKOSU.js";
60
60
  import "../chunk-KZERVKTD.js";
61
61
  import {
@@ -68,7 +68,7 @@ import {
68
68
  hookWaitClamped,
69
69
  hookWaitDeadline,
70
70
  resolveGate
71
- } from "../chunk-Q6MK2YKV.js";
71
+ } from "../chunk-L4C2JXJS.js";
72
72
 
73
73
  // bin/pushary-codex-hook.ts
74
74
  import { basename } from "path";
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  reportEvent
4
- } from "../chunk-OSE7X44J.js";
4
+ } from "../chunk-6XSC6Z2K.js";
5
5
  import {
6
6
  askUser,
7
7
  waitForAnswer
8
8
  } from "../chunk-J3YDT4HM.js";
9
- import "../chunk-LXTX5CT7.js";
9
+ import "../chunk-LGXTBUT4.js";
10
10
  import {
11
11
  getMachineId
12
12
  } from "../chunk-RN3NOEJF.js";
13
13
  import "../chunk-BSZYIAZL.js";
14
14
  import "../chunk-SAF6HGAA.js";
15
- import "../chunk-AJ4EMW5D.js";
15
+ import "../chunk-OFRNZWC4.js";
16
16
  import "../chunk-7QLSKOSU.js";
17
17
  import "../chunk-KZERVKTD.js";
18
18
  import {
19
19
  getApiKey
20
20
  } from "../chunk-2UMNXADU.js";
21
- import "../chunk-Q6MK2YKV.js";
21
+ import "../chunk-L4C2JXJS.js";
22
22
 
23
23
  // bin/pushary-codex.ts
24
24
  import { basename } from "path";
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  printKeyCheck
4
- } from "../chunk-ZPRF4YLA.js";
4
+ } from "../chunk-SS72Z7FV.js";
5
5
  import {
6
6
  confirmAppConnection,
7
7
  connectDevice,
8
8
  printConnectInstructions
9
- } from "../chunk-SHVW5KFR.js";
9
+ } from "../chunk-T3LRWZKI.js";
10
10
  import "../chunk-3EGEA4KH.js";
11
11
  import {
12
12
  checkApiKey
13
- } from "../chunk-WFFPWJN6.js";
13
+ } from "../chunk-I5L6SK5V.js";
14
14
  import {
15
15
  createIo
16
16
  } from "../chunk-5RUIFDTP.js";
17
17
  import {
18
18
  readKeySource
19
- } from "../chunk-EKNFTIKO.js";
19
+ } from "../chunk-LALHWDWL.js";
20
20
  import {
21
21
  parseFlags
22
22
  } from "../chunk-GMXKITVA.js";
@@ -29,7 +29,7 @@ import "../chunk-DINDL2CF.js";
29
29
  import "../chunk-6MTNS63X.js";
30
30
  import "../chunk-BSZYIAZL.js";
31
31
  import "../chunk-SAF6HGAA.js";
32
- import "../chunk-AJ4EMW5D.js";
32
+ import "../chunk-OFRNZWC4.js";
33
33
  import {
34
34
  UsageError
35
35
  } from "../chunk-7QLSKOSU.js";
@@ -37,7 +37,7 @@ import {
37
37
  EXIT
38
38
  } from "../chunk-KZERVKTD.js";
39
39
  import "../chunk-2UMNXADU.js";
40
- import "../chunk-Q6MK2YKV.js";
40
+ import "../chunk-L4C2JXJS.js";
41
41
 
42
42
  // bin/pushary-connect.ts
43
43
  exitOnHelpFlag("connect");
@@ -8,7 +8,7 @@ import {
8
8
  acquireDaemonLease,
9
9
  readDaemonStatus,
10
10
  requestDaemonHandoff
11
- } from "../chunk-4FANZF2L.js";
11
+ } from "../chunk-K42SZKYF.js";
12
12
  import {
13
13
  CODEX_BRIDGE_CAPABILITY,
14
14
  CODEX_RESUME_CAPABILITY,
@@ -17,7 +17,7 @@ import {
17
17
  import {
18
18
  findLiveProcessBySpawnId,
19
19
  ownsLiveProcess
20
- } from "../chunk-U44C3ULB.js";
20
+ } from "../chunk-ZYPS2XMT.js";
21
21
  import {
22
22
  spawnClaude
23
23
  } from "../chunk-XHKBHWLX.js";
@@ -26,7 +26,7 @@ import {
26
26
  resolveGlobalPackageVersion,
27
27
  resolvePackageVersionFromBinary
28
28
  } from "../chunk-PZA7G4CN.js";
29
- import "../chunk-FRH2QIMY.js";
29
+ import "../chunk-VKVHY5HD.js";
30
30
  import "../chunk-GIRT7677.js";
31
31
  import {
32
32
  getMachineId
@@ -44,7 +44,7 @@ import {
44
44
  getApiKey,
45
45
  getBaseUrl
46
46
  } from "../chunk-2UMNXADU.js";
47
- import "../chunk-Q6MK2YKV.js";
47
+ import "../chunk-L4C2JXJS.js";
48
48
 
49
49
  // src/spawn-daemon.ts
50
50
  import { execFileSync, spawn } from "child_process";
@@ -8,12 +8,12 @@ import {
8
8
  openCodePluginDir,
9
9
  openCodePluginFile,
10
10
  removeOpenCodeMcpServer
11
- } from "../chunk-4KMWTOBK.js";
11
+ } from "../chunk-O5B7EK5U.js";
12
12
  import {
13
13
  removeClaudeMcpServers,
14
14
  removeGeminiSettings,
15
15
  removePusharySettings
16
- } from "../chunk-F3ZDPL6O.js";
16
+ } from "../chunk-7TS2G4QG.js";
17
17
  import "../chunk-ATBKJNWS.js";
18
18
  import "../chunk-AIGDBRIJ.js";
19
19
  import "../chunk-PZA7G4CN.js";
@@ -29,7 +29,7 @@ import {
29
29
  geminiSettings,
30
30
  removeCodexHooks,
31
31
  removeCodexSettings
32
- } from "../chunk-FRH2QIMY.js";
32
+ } from "../chunk-VKVHY5HD.js";
33
33
  import "../chunk-GIRT7677.js";
34
34
  import {
35
35
  exitOnHelpFlag
@@ -37,7 +37,7 @@ import {
37
37
  import "../chunk-GOEXZ5QJ.js";
38
38
  import "../chunk-DINDL2CF.js";
39
39
  import "../chunk-KZERVKTD.js";
40
- import "../chunk-Q6MK2YKV.js";
40
+ import "../chunk-L4C2JXJS.js";
41
41
 
42
42
  // bin/pushary-disconnect.ts
43
43
  import { readdirSync, readFileSync, rmSync, writeFileSync } from "fs";
@@ -6,10 +6,10 @@ import {
6
6
  claudeWired,
7
7
  codexWired,
8
8
  geminiWired
9
- } from "../chunk-SUZF64M4.js";
9
+ } from "../chunk-4VYUMYWD.js";
10
10
  import {
11
11
  readDaemonStatus
12
- } from "../chunk-4FANZF2L.js";
12
+ } from "../chunk-K42SZKYF.js";
13
13
  import {
14
14
  agentProbes,
15
15
  detectAgent,
@@ -18,18 +18,18 @@ import {
18
18
  isDetected,
19
19
  isPluginRegistered,
20
20
  vscodeSettingsTargets
21
- } from "../chunk-O7P7O4VY.js";
21
+ } from "../chunk-LUCFN47K.js";
22
22
  import {
23
23
  OPENCODE_PLUGIN_PLACEHOLDER,
24
24
  openCodePluginDir,
25
25
  openCodePluginFile,
26
26
  openCodeWired
27
- } from "../chunk-4KMWTOBK.js";
27
+ } from "../chunk-O5B7EK5U.js";
28
28
  import {
29
29
  GEMINI_HOOK_BINARY,
30
30
  hasGeminiHooks,
31
31
  missingGeminiHookEvents
32
- } from "../chunk-F3ZDPL6O.js";
32
+ } from "../chunk-7TS2G4QG.js";
33
33
  import "../chunk-ATBKJNWS.js";
34
34
  import "../chunk-AIGDBRIJ.js";
35
35
  import "../chunk-XHKBHWLX.js";
@@ -55,12 +55,12 @@ import {
55
55
  readCodexMcpAuth,
56
56
  untrustedCodexHookEvents,
57
57
  vscodePluginDir
58
- } from "../chunk-FRH2QIMY.js";
58
+ } from "../chunk-VKVHY5HD.js";
59
59
  import {
60
60
  readLedgerSummary
61
- } from "../chunk-PXEFENML.js";
61
+ } from "../chunk-VZKXBFUA.js";
62
62
  import "../chunk-GIRT7677.js";
63
- import "../chunk-LXTX5CT7.js";
63
+ import "../chunk-LGXTBUT4.js";
64
64
  import {
65
65
  getMachineId
66
66
  } from "../chunk-RN3NOEJF.js";
@@ -70,19 +70,19 @@ import {
70
70
  fetchChannels,
71
71
  reachVerdict,
72
72
  verifyRoundTrip
73
- } from "../chunk-SHVW5KFR.js";
73
+ } from "../chunk-T3LRWZKI.js";
74
74
  import "../chunk-3EGEA4KH.js";
75
75
  import {
76
76
  checkApiKey,
77
77
  describeKeyCheck
78
- } from "../chunk-WFFPWJN6.js";
78
+ } from "../chunk-I5L6SK5V.js";
79
79
  import {
80
80
  createIo
81
81
  } from "../chunk-5RUIFDTP.js";
82
82
  import {
83
83
  keyPrefix,
84
84
  readKeySource
85
- } from "../chunk-EKNFTIKO.js";
85
+ } from "../chunk-LALHWDWL.js";
86
86
  import {
87
87
  parseFlags
88
88
  } from "../chunk-GMXKITVA.js";
@@ -100,7 +100,7 @@ import {
100
100
  sendMcpRequest
101
101
  } from "../chunk-BSZYIAZL.js";
102
102
  import "../chunk-SAF6HGAA.js";
103
- import "../chunk-AJ4EMW5D.js";
103
+ import "../chunk-OFRNZWC4.js";
104
104
  import {
105
105
  UsageError
106
106
  } from "../chunk-7QLSKOSU.js";
@@ -112,7 +112,7 @@ import {
112
112
  } from "../chunk-2UMNXADU.js";
113
113
  import {
114
114
  CURSOR_GATE_EVENTS
115
- } from "../chunk-Q6MK2YKV.js";
115
+ } from "../chunk-L4C2JXJS.js";
116
116
 
117
117
  // bin/pushary-doctor.ts
118
118
  import { existsSync, readFileSync, writeFileSync } from "fs";
@@ -32,7 +32,7 @@ import {
32
32
  planElicitationAsk,
33
33
  readElicitationFields,
34
34
  renderElicitationOutput
35
- } from "../chunk-Q6MK2YKV.js";
35
+ } from "../chunk-L4C2JXJS.js";
36
36
 
37
37
  // bin/pushary-elicitation-hook.ts
38
38
  import { basename } from "path";
@@ -59,35 +59,55 @@ var main = async () => {
59
59
  if (!apiKey) return;
60
60
  const project = basename(input.cwd ?? process.cwd());
61
61
  const deadline = hookWaitDeadline(START_MS, effectiveWaitSeconds("wait", 0, "claude"), "claude", Date.now());
62
- let created;
63
- try {
64
- created = await askUser(apiKey, {
65
- question: ask.kind === "questions" ? ask.questions[0].question : ask.question,
66
- type: ask.kind === "questions" ? "select" : ask.kind,
67
- ...ask.kind === "select" ? { options: [...ask.options] } : {},
68
- ...ask.kind === "questions" ? { options: ask.questions[0].options.map((option) => option.label), questions: [...ask.questions] } : {},
69
- context: `${input.mcp_server_name ?? "An MCP server"} is asking for input`,
70
- agentName: `Claude Code - ${project}`,
71
- sessionId: input.session_id,
72
- machineId: getMachineId(),
73
- toolName: "Elicitation",
74
- toolTarget: input.mcp_server_name,
75
- // The elicitation's own id, so a retried create is the same decision rather
76
- // than a second question on the same lock screen.
77
- toolUseId: input.elicitation_id
78
- });
79
- } catch {
80
- return;
81
- }
82
- if (created.suppressed || created.noDevices) {
83
- await cancelQuestion(apiKey, created.correlationId).catch(() => {
84
- });
85
- return;
62
+ const common = {
63
+ context: `${input.mcp_server_name ?? "An MCP server"} is asking for input`,
64
+ agentName: `Claude Code - ${project}`,
65
+ sessionId: input.session_id,
66
+ machineId: getMachineId(),
67
+ toolName: "Elicitation",
68
+ toolTarget: input.mcp_server_name
69
+ };
70
+ const prompts = ask.kind === "questions" ? [...ask.questions.entries()].map(([index, question]) => ({
71
+ question: question.question,
72
+ type: "select",
73
+ options: question.options.map((option) => option.label),
74
+ questions: [question],
75
+ toolUseId: input.elicitation_id ? `${input.elicitation_id}:${index}` : void 0
76
+ })) : [{
77
+ question: ask.question,
78
+ type: ask.kind,
79
+ ...ask.kind === "select" ? { options: [...ask.options] } : {},
80
+ toolUseId: input.elicitation_id
81
+ }];
82
+ let simpleAnswer;
83
+ const questionAnswers = {};
84
+ for (const prompt of prompts) {
85
+ let created;
86
+ try {
87
+ created = await askUser(apiKey, { ...common, ...prompt });
88
+ } catch {
89
+ return;
90
+ }
91
+ if (created.suppressed || created.noDevices) {
92
+ await cancelQuestion(apiKey, created.correlationId).catch(() => {
93
+ });
94
+ return;
95
+ }
96
+ const answer = await pollForAnswer(apiKey, created.correlationId, deadline);
97
+ if (ask.kind === "questions") {
98
+ const question = "questions" in prompt ? prompt.questions[0] : void 0;
99
+ const parsed = question && answer.answered && answer.value ? parseAgentQuestionAnswers([question], answer.value) : null;
100
+ if (parsed) Object.assign(questionAnswers, parsed);
101
+ else {
102
+ savePendingQuestion(input.session_id || DEFAULT_SESSION, created.correlationId);
103
+ return;
104
+ }
105
+ } else {
106
+ simpleAnswer = answer;
107
+ }
86
108
  }
87
- const answer = await pollForAnswer(apiKey, created.correlationId, deadline);
88
- const content = answered(ask, answer);
109
+ const content = ask.kind === "questions" ? elicitationContentFromAnswers(ask, questionAnswers) : simpleAnswer ? answered(ask, simpleAnswer) : null;
89
110
  if (!content) {
90
- savePendingQuestion(input.session_id || DEFAULT_SESSION, created.correlationId);
91
111
  return;
92
112
  }
93
113
  const output = renderElicitationOutput("Elicitation", "accept", content);
@@ -5,19 +5,19 @@ import {
5
5
  postLiveSession,
6
6
  postLiveSessionUntilAccepted,
7
7
  startLiveSessionHeartbeat
8
- } from "../chunk-LNAQWWBP.js";
9
- import "../chunk-6GBQDZ7K.js";
8
+ } from "../chunk-C623LWJR.js";
9
+ import "../chunk-PMHTCDEO.js";
10
10
  import {
11
11
  startProcessOwnership,
12
12
  withSpawnProcessOwnership
13
- } from "../chunk-U44C3ULB.js";
13
+ } from "../chunk-ZYPS2XMT.js";
14
14
  import {
15
15
  spawnClaude
16
16
  } from "../chunk-XHKBHWLX.js";
17
17
  import {
18
18
  resolveBinary
19
19
  } from "../chunk-PZA7G4CN.js";
20
- import "../chunk-FRH2QIMY.js";
20
+ import "../chunk-VKVHY5HD.js";
21
21
  import "../chunk-GIRT7677.js";
22
22
  import {
23
23
  getMachineId
@@ -27,7 +27,7 @@ import {
27
27
  getApiKey,
28
28
  getBaseUrl
29
29
  } from "../chunk-2UMNXADU.js";
30
- import "../chunk-Q6MK2YKV.js";
30
+ import "../chunk-L4C2JXJS.js";
31
31
 
32
32
  // bin/pushary-gemini-bridge.ts
33
33
  import { existsSync } from "fs";