pushary 1.9.117 → 1.9.119

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 (130) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/{api-OXKVQGTP.js → api-WWB7ZOLK.js} +11 -11
  3. package/dist/bin/pushary-audit.js +3 -3
  4. package/dist/bin/pushary-bell-hook.js +27 -27
  5. package/dist/bin/pushary-bell.js +10 -10
  6. package/dist/bin/pushary-claude.js +35 -40
  7. package/dist/bin/pushary-clean.js +43 -43
  8. package/dist/bin/pushary-codex-bridge.js +21 -21
  9. package/dist/bin/pushary-codex-hook.js +64 -75
  10. package/dist/bin/pushary-codex-session.js +8 -8
  11. package/dist/bin/pushary-codex.js +15 -15
  12. package/dist/bin/pushary-connect.js +28 -28
  13. package/dist/bin/pushary-cowork.js +5 -5
  14. package/dist/bin/pushary-daemon.js +44 -44
  15. package/dist/bin/pushary-disconnect.js +27 -27
  16. package/dist/bin/pushary-display-hook.js +17 -17
  17. package/dist/bin/pushary-doctor.js +47 -47
  18. package/dist/bin/pushary-elicitation-hook.js +27 -27
  19. package/dist/bin/pushary-gemini-bridge.js +15 -15
  20. package/dist/bin/pushary-gemini-hook.js +93 -90
  21. package/dist/bin/pushary-hook.js +33 -32
  22. package/dist/bin/pushary-login.js +22 -22
  23. package/dist/bin/pushary-logout.js +26 -26
  24. package/dist/bin/pushary-mcp.js +12 -12
  25. package/dist/bin/pushary-mode.js +15 -15
  26. package/dist/bin/pushary-notification-hook.js +26 -26
  27. package/dist/bin/pushary-opencode-hook.js +93 -75
  28. package/dist/bin/pushary-permission-denied-hook.js +33 -32
  29. package/dist/bin/pushary-permission-hook.js +33 -32
  30. package/dist/bin/pushary-post-hook.js +26 -26
  31. package/dist/bin/pushary-prompt-hook.js +26 -26
  32. package/dist/bin/pushary-session-end-hook.js +26 -26
  33. package/dist/bin/pushary-session-start-hook.js +35 -35
  34. package/dist/bin/pushary-setup.js +90 -90
  35. package/dist/bin/pushary-stats.js +5 -5
  36. package/dist/bin/pushary-status.js +32 -32
  37. package/dist/bin/pushary-stop-hook.js +26 -26
  38. package/dist/bin/pushary-stopfailure-hook.js +26 -26
  39. package/dist/bin/pushary-suggestions.js +15 -15
  40. package/dist/bin/pushary-transcript-register.js +17 -17
  41. package/dist/bin/pushary-transcripts.js +25 -25
  42. package/dist/bin/pushary-upgrade.js +43 -43
  43. package/dist/bin/pushary-wait.js +17 -17
  44. package/dist/bin/pushary.js +7 -7
  45. package/dist/{chunk-3ZQT5LQ3.js → chunk-2C45MJGK.js} +9 -6
  46. package/dist/{chunk-H5RGOO3B.js → chunk-2UE2NDCX.js} +1 -1
  47. package/dist/{chunk-NSCLVG7M.js → chunk-3B7S2H4R.js} +1 -1
  48. package/dist/{chunk-EXWJBUL5.js → chunk-3IESC326.js} +3 -3
  49. package/dist/{chunk-PHCZ26TZ.js → chunk-4D23TNCL.js} +4 -4
  50. package/dist/{chunk-DH23XX7X.js → chunk-4HDX77ND.js} +3 -3
  51. package/dist/{chunk-NI5KTEVM.js → chunk-4SZM2HRA.js} +6 -6
  52. package/dist/{chunk-XIJ4ADBX.js → chunk-5HKU4VUL.js} +3 -3
  53. package/dist/{chunk-EBL6XYOI.js → chunk-5T5T4YXM.js} +1 -1
  54. package/dist/{chunk-LN6LLUY7.js → chunk-67I7QRQB.js} +1 -1
  55. package/dist/{chunk-2NN5ODYJ.js → chunk-6KX2H4I5.js} +3 -3
  56. package/dist/{chunk-BSSD6UWJ.js → chunk-6YLVNFQZ.js} +3 -3
  57. package/dist/{chunk-U2AB2ZUZ.js → chunk-7CJ7W2RH.js} +4 -4
  58. package/dist/{chunk-MKTZZPWV.js → chunk-AGXOTZID.js} +5 -5
  59. package/dist/{chunk-MYSBGQU6.js → chunk-B7BOENW7.js} +1 -1
  60. package/dist/{chunk-SUMWA5VN.js → chunk-BQ673OOD.js} +2 -2
  61. package/dist/{chunk-ARRXCME5.js → chunk-CBLFIWPI.js} +2 -2
  62. package/dist/{chunk-7VPA5PXJ.js → chunk-COXNQUDP.js} +4 -4
  63. package/dist/{chunk-PHDPS5C7.js → chunk-CXIYGD33.js} +2 -2
  64. package/dist/{chunk-YEV6CIQZ.js → chunk-DXJUASTS.js} +2 -2
  65. package/dist/{chunk-X2JY437V.js → chunk-EFFH2FYG.js} +2 -2
  66. package/dist/{chunk-BJ7FGYF7.js → chunk-EISUEJDT.js} +6 -6
  67. package/dist/{chunk-4UGNMAQ2.js → chunk-EP6I3MQY.js} +4 -4
  68. package/dist/{chunk-IUPEFEBH.js → chunk-FPG7X2GS.js} +4 -4
  69. package/dist/{chunk-5TVOBKRE.js → chunk-G4OVFWU4.js} +20 -14
  70. package/dist/{chunk-4BV525QE.js → chunk-G5FQU2XF.js} +6 -6
  71. package/dist/{chunk-NZFYK75R.js → chunk-GAOUWLYN.js} +3 -3
  72. package/dist/{chunk-2KYPNVRC.js → chunk-GBVTVTDF.js} +1 -1
  73. package/dist/{chunk-BE6JIWTM.js → chunk-GW3PE52Q.js} +1 -1
  74. package/dist/{chunk-PPNJ3INA.js → chunk-HYTDNEXV.js} +1 -1
  75. package/dist/{chunk-K54Y2QFA.js → chunk-ISVHV2DP.js} +1 -1
  76. package/dist/{chunk-RVYREG7X.js → chunk-JJNF6QU4.js} +1 -1
  77. package/dist/{chunk-F3Z7UWM6.js → chunk-JKS4MN47.js} +6 -6
  78. package/dist/{chunk-S5MQA774.js → chunk-K5WTTEIQ.js} +5 -5
  79. package/dist/{chunk-FKH3KT4U.js → chunk-KILSIJTF.js} +31 -21
  80. package/dist/{chunk-XU4DUX7K.js → chunk-KOZBVXXC.js} +3 -3
  81. package/dist/{chunk-TKTNQORW.js → chunk-KVDN4U6W.js} +10 -10
  82. package/dist/{chunk-RYAWSPAR.js → chunk-L3MCQSES.js} +5 -5
  83. package/dist/{chunk-MHU7CW7T.js → chunk-MEPYLTWF.js} +10 -10
  84. package/dist/{chunk-FRIQ4LQ5.js → chunk-MYNLU6DV.js} +2 -2
  85. package/dist/{chunk-N74WJAL6.js → chunk-NASQPMXW.js} +9 -9
  86. package/dist/{chunk-XJC6PG7J.js → chunk-NVV3YUTX.js} +2 -2
  87. package/dist/{chunk-T3UOM443.js → chunk-PDAOZ2NF.js} +10 -10
  88. package/dist/{chunk-R5ZMI6BM.js → chunk-PJSFKKZ5.js} +1 -1
  89. package/dist/{chunk-4SI3CUWN.js → chunk-PNSIMPC7.js} +6 -6
  90. package/dist/{chunk-N4DQDFEP.js → chunk-R3RTISDD.js} +1 -1
  91. package/dist/{chunk-GJNWZWMA.js → chunk-R67NTMBY.js} +8 -8
  92. package/dist/{chunk-3OVRAD25.js → chunk-RGXFBS56.js} +3 -3
  93. package/dist/{chunk-UJGA7WL5.js → chunk-RIAELZYW.js} +2 -2
  94. package/dist/{chunk-74MC5LRW.js → chunk-SE7P5BBK.js} +1 -1
  95. package/dist/{chunk-2UYYX6VC.js → chunk-SNKC2IQZ.js} +2 -2
  96. package/dist/{chunk-DE6ZYZZZ.js → chunk-SQRS4IF2.js} +3 -3
  97. package/dist/{chunk-G5EB7GAR.js → chunk-SSBETUYZ.js} +3 -3
  98. package/dist/{chunk-C2NKILG3.js → chunk-TLCJCP5R.js} +1 -1
  99. package/dist/{chunk-KYWTX4R2.js → chunk-TRDHHF3A.js} +337 -37
  100. package/dist/{chunk-RCCISH7T.js → chunk-TZYVXTLN.js} +1 -1
  101. package/dist/{chunk-6ICAZ33G.js → chunk-U32N5JZO.js} +1 -1
  102. package/dist/{chunk-BL7ESWIQ.js → chunk-UHAUC7EO.js} +2 -2
  103. package/dist/{chunk-C32IT2TR.js → chunk-V52J2THT.js} +1 -1
  104. package/dist/chunk-VFZ2PE6U.js +60 -0
  105. package/dist/{chunk-DZI6MSR4.js → chunk-VMM6JCNQ.js} +2 -2
  106. package/dist/{chunk-MI56IIXG.js → chunk-VRZOUCIK.js} +2 -2
  107. package/dist/{chunk-2JQZFGIF.js → chunk-W5ZUDPKV.js} +5 -5
  108. package/dist/{chunk-ZJKH3CTN.js → chunk-W6LKC5YD.js} +5 -5
  109. package/dist/{chunk-J3PBLQUD.js → chunk-XBH6OKHD.js} +3 -3
  110. package/dist/{chunk-SE62HPB7.js → chunk-XNCKBVZX.js} +6 -61
  111. package/dist/{chunk-SQLXC4PM.js → chunk-YCCLWG7G.js} +6 -6
  112. package/dist/{chunk-YU3LDR5W.js → chunk-YZ7V2LVG.js} +3 -3
  113. package/dist/{chunk-MA4KQLCT.js → chunk-YZESBU7F.js} +5 -5
  114. package/dist/{chunk-FW2SOQ5J.js → chunk-Z3OG44Z4.js} +4 -4
  115. package/dist/chunk-ZLUAXGAA.js +121 -0
  116. package/dist/{chunk-6GZU4IYU.js → chunk-ZTVBM3EZ.js} +4 -4
  117. package/dist/{codex-app-cards-switch-ANBV6CA6.js → codex-app-cards-switch-J6EULXO5.js} +12 -12
  118. package/dist/{codex-card-routing-POEBILLG.js → codex-card-routing-XNJB6573.js} +2 -2
  119. package/dist/{codex-desktop-launch-Z4HXKBYP.js → codex-desktop-launch-46ELENBQ.js} +1 -1
  120. package/dist/{codex-session-launch-XA6BMIVU.js → codex-session-launch-R5FHFWAG.js} +18 -18
  121. package/dist/{config-ATKVK4QQ.js → config-RKWDMDRY.js} +3 -3
  122. package/dist/{global-upgrade-BJKCVYJU.js → global-upgrade-E65GJQS6.js} +9 -9
  123. package/dist/{identity-X3FI7ZYE.js → identity-JRGY2KS6.js} +4 -4
  124. package/dist/{live-capabilities-6OV363JK.js → live-capabilities-SOO6PD7Y.js} +4 -4
  125. package/dist/{paths-U67N2RPP.js → paths-G7NZODAY.js} +3 -3
  126. package/dist/{reapply-L3KVM3ZO.js → reapply-YKN5BKIP.js} +28 -28
  127. package/dist/src/index.js +32 -31
  128. package/dist/{upgrade-lock-ZIPY7I2T.js → upgrade-lock-YKAZI3BH.js} +4 -4
  129. package/dist/{usage-RAJPNVE5.js → usage-QWYNOIU6.js} +3 -3
  130. package/package.json +2 -2
@@ -1,34 +1,34 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  modeResponse
4
- } from "../chunk-NSCLVG7M.js";
4
+ } from "../chunk-3B7S2H4R.js";
5
5
  import {
6
6
  exitOnFailedSettingsRequest
7
- } from "../chunk-4SI3CUWN.js";
8
- import "../chunk-BL7ESWIQ.js";
9
- import "../chunk-SUMWA5VN.js";
7
+ } from "../chunk-PNSIMPC7.js";
8
+ import "../chunk-UHAUC7EO.js";
9
+ import "../chunk-BQ673OOD.js";
10
10
  import {
11
11
  createIo
12
12
  } from "../chunk-FO3MDD26.js";
13
13
  import {
14
14
  exitOnHelpFlag
15
- } from "../chunk-LN6LLUY7.js";
15
+ } from "../chunk-67I7QRQB.js";
16
16
  import {
17
17
  parseFlags
18
18
  } from "../chunk-YPY4YCIZ.js";
19
- import "../chunk-DH23XX7X.js";
19
+ import "../chunk-4HDX77ND.js";
20
20
  import {
21
21
  pusharyFetch
22
- } from "../chunk-3OVRAD25.js";
23
- import "../chunk-RCCISH7T.js";
24
- import "../chunk-YU3LDR5W.js";
25
- import "../chunk-DZI6MSR4.js";
26
- import "../chunk-ARRXCME5.js";
27
- import "../chunk-XU4DUX7K.js";
22
+ } from "../chunk-RGXFBS56.js";
23
+ import "../chunk-TZYVXTLN.js";
24
+ import "../chunk-YZ7V2LVG.js";
25
+ import "../chunk-VMM6JCNQ.js";
26
+ import "../chunk-CBLFIWPI.js";
27
+ import "../chunk-KOZBVXXC.js";
28
28
  import {
29
29
  getApiKey,
30
30
  getBaseUrl
31
- } from "../chunk-N4DQDFEP.js";
31
+ } from "../chunk-R3RTISDD.js";
32
32
  import {
33
33
  UsageError,
34
34
  exitCodeFor
@@ -42,9 +42,9 @@ import {
42
42
  describeMode,
43
43
  modeRequestBody,
44
44
  resolveModeInput
45
- } from "../chunk-R5ZMI6BM.js";
45
+ } from "../chunk-PJSFKKZ5.js";
46
46
  import "../chunk-ZVU6WMMU.js";
47
- import "../chunk-KYWTX4R2.js";
47
+ import "../chunk-TRDHHF3A.js";
48
48
  import "../chunk-MLKGABMK.js";
49
49
 
50
50
  // bin/pushary-mode.ts
@@ -1,47 +1,47 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-3ZQT5LQ3.js";
5
- import "../chunk-4UGNMAQ2.js";
6
- import "../chunk-T3UOM443.js";
4
+ } from "../chunk-2C45MJGK.js";
5
+ import "../chunk-EP6I3MQY.js";
6
+ import "../chunk-PDAOZ2NF.js";
7
7
  import "../chunk-HXBQTPKC.js";
8
8
  import "../chunk-G66WIAST.js";
9
9
  import {
10
10
  activeHookSource,
11
11
  activeIdentity
12
- } from "../chunk-MA4KQLCT.js";
12
+ } from "../chunk-YZESBU7F.js";
13
13
  import {
14
14
  handleNotification
15
- } from "../chunk-5TVOBKRE.js";
16
- import "../chunk-BJ7FGYF7.js";
17
- import "../chunk-7VPA5PXJ.js";
18
- import "../chunk-BE6JIWTM.js";
19
- import "../chunk-H5RGOO3B.js";
20
- import "../chunk-C32IT2TR.js";
15
+ } from "../chunk-G4OVFWU4.js";
16
+ import "../chunk-EISUEJDT.js";
17
+ import "../chunk-COXNQUDP.js";
18
+ import "../chunk-GW3PE52Q.js";
19
+ import "../chunk-2UE2NDCX.js";
20
+ import "../chunk-V52J2THT.js";
21
21
  import "../chunk-YPY4YCIZ.js";
22
- import "../chunk-DE6ZYZZZ.js";
22
+ import "../chunk-SQRS4IF2.js";
23
23
  import "../chunk-XMSDA5WA.js";
24
- import "../chunk-C2NKILG3.js";
25
- import "../chunk-74MC5LRW.js";
26
- import "../chunk-N74WJAL6.js";
24
+ import "../chunk-TLCJCP5R.js";
25
+ import "../chunk-SE7P5BBK.js";
26
+ import "../chunk-NASQPMXW.js";
27
27
  import "../chunk-POFBE6ZY.js";
28
- import "../chunk-ZJKH3CTN.js";
29
- import "../chunk-DH23XX7X.js";
30
- import "../chunk-3OVRAD25.js";
28
+ import "../chunk-W6LKC5YD.js";
29
+ import "../chunk-4HDX77ND.js";
30
+ import "../chunk-RGXFBS56.js";
31
31
  import "../chunk-XHKBHWLX.js";
32
- import "../chunk-6ICAZ33G.js";
33
- import "../chunk-RCCISH7T.js";
34
- import "../chunk-YU3LDR5W.js";
35
- import "../chunk-DZI6MSR4.js";
36
- import "../chunk-ARRXCME5.js";
37
- import "../chunk-XU4DUX7K.js";
38
- import "../chunk-N4DQDFEP.js";
32
+ import "../chunk-U32N5JZO.js";
33
+ import "../chunk-TZYVXTLN.js";
34
+ import "../chunk-YZ7V2LVG.js";
35
+ import "../chunk-VMM6JCNQ.js";
36
+ import "../chunk-CBLFIWPI.js";
37
+ import "../chunk-KOZBVXXC.js";
38
+ import "../chunk-R3RTISDD.js";
39
39
  import "../chunk-YU2EUD7O.js";
40
40
  import "../chunk-T5I4PKOQ.js";
41
41
  import "../chunk-BG4HHB7E.js";
42
- import "../chunk-R5ZMI6BM.js";
42
+ import "../chunk-PJSFKKZ5.js";
43
43
  import "../chunk-ZVU6WMMU.js";
44
- import "../chunk-KYWTX4R2.js";
44
+ import "../chunk-TRDHHF3A.js";
45
45
  import "../chunk-MLKGABMK.js";
46
46
 
47
47
  // bin/pushary-notification-hook.ts
@@ -1,20 +1,28 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ parseOpenCodeHookInput,
4
+ pushQuestionAndWait,
5
+ scopeQuestionOf
6
+ } from "../chunk-ZLUAXGAA.js";
7
+ import {
8
+ reportMachineDenial
9
+ } from "../chunk-VFZ2PE6U.js";
2
10
  import {
3
11
  isGatingMoment,
4
12
  recordKeylessMoment
5
- } from "../chunk-K54Y2QFA.js";
13
+ } from "../chunk-ISVHV2DP.js";
6
14
  import {
7
15
  readHookInput
8
- } from "../chunk-3ZQT5LQ3.js";
9
- import "../chunk-4UGNMAQ2.js";
16
+ } from "../chunk-2C45MJGK.js";
17
+ import "../chunk-EP6I3MQY.js";
10
18
  import {
11
19
  announceSubscriptionRequired,
12
20
  isDeferAnswer
13
- } from "../chunk-2KYPNVRC.js";
14
- import "../chunk-T3UOM443.js";
21
+ } from "../chunk-GBVTVTDF.js";
22
+ import "../chunk-PDAOZ2NF.js";
15
23
  import "../chunk-HXBQTPKC.js";
16
24
  import "../chunk-G66WIAST.js";
17
- import "../chunk-MA4KQLCT.js";
25
+ import "../chunk-YZESBU7F.js";
18
26
  import {
19
27
  DEFAULT_SESSION,
20
28
  fetchModeState,
@@ -24,9 +32,9 @@ import {
24
32
  handleUserPrompt,
25
33
  policyRequestFor,
26
34
  readLastPrompt
27
- } from "../chunk-5TVOBKRE.js";
28
- import "../chunk-BJ7FGYF7.js";
29
- import "../chunk-7VPA5PXJ.js";
35
+ } from "../chunk-G4OVFWU4.js";
36
+ import "../chunk-EISUEJDT.js";
37
+ import "../chunk-COXNQUDP.js";
30
38
  import {
31
39
  HOOK_FALLBACK_MAX,
32
40
  OPENCODE_TOOL_NAMES,
@@ -36,67 +44,64 @@ import {
36
44
  deriveToolTarget,
37
45
  describeToolCall,
38
46
  scopePathFor
39
- } from "../chunk-BE6JIWTM.js";
40
- import "../chunk-H5RGOO3B.js";
41
- import "../chunk-C32IT2TR.js";
47
+ } from "../chunk-GW3PE52Q.js";
48
+ import "../chunk-2UE2NDCX.js";
49
+ import "../chunk-V52J2THT.js";
42
50
  import "../chunk-YPY4YCIZ.js";
43
- import "../chunk-DE6ZYZZZ.js";
51
+ import "../chunk-SQRS4IF2.js";
44
52
  import "../chunk-XMSDA5WA.js";
45
- import "../chunk-C2NKILG3.js";
53
+ import "../chunk-TLCJCP5R.js";
46
54
  import {
47
55
  repoKeyFor
48
- } from "../chunk-74MC5LRW.js";
56
+ } from "../chunk-SE7P5BBK.js";
49
57
  import {
50
- askUser,
51
58
  cancelQuestion,
52
59
  exitAfterClientReports,
53
60
  isDecisionStopped,
54
- isLocalQuestionHandoff,
55
61
  isQuestionLimitRefusal,
56
- sendNotification,
57
- unavailableQuestionUnlessRefused,
58
- waitForQuestion
59
- } from "../chunk-N74WJAL6.js";
62
+ sendNotification
63
+ } from "../chunk-NASQPMXW.js";
60
64
  import "../chunk-POFBE6ZY.js";
61
65
  import {
62
66
  SubscriptionRequiredError
63
- } from "../chunk-ZJKH3CTN.js";
64
- import "../chunk-DH23XX7X.js";
65
- import "../chunk-3OVRAD25.js";
67
+ } from "../chunk-W6LKC5YD.js";
68
+ import "../chunk-4HDX77ND.js";
69
+ import "../chunk-RGXFBS56.js";
66
70
  import "../chunk-XHKBHWLX.js";
67
- import "../chunk-6ICAZ33G.js";
71
+ import "../chunk-U32N5JZO.js";
68
72
  import {
69
73
  getMachineId
70
- } from "../chunk-RCCISH7T.js";
71
- import "../chunk-YU3LDR5W.js";
72
- import "../chunk-DZI6MSR4.js";
73
- import "../chunk-ARRXCME5.js";
74
- import "../chunk-XU4DUX7K.js";
74
+ } from "../chunk-TZYVXTLN.js";
75
+ import "../chunk-YZ7V2LVG.js";
76
+ import "../chunk-VMM6JCNQ.js";
77
+ import "../chunk-CBLFIWPI.js";
78
+ import "../chunk-KOZBVXXC.js";
75
79
  import {
76
80
  getApiKey
77
- } from "../chunk-N4DQDFEP.js";
81
+ } from "../chunk-R3RTISDD.js";
78
82
  import "../chunk-YU2EUD7O.js";
79
83
  import "../chunk-T5I4PKOQ.js";
80
84
  import {
81
85
  EXIT
82
86
  } from "../chunk-BG4HHB7E.js";
83
- import "../chunk-R5ZMI6BM.js";
87
+ import "../chunk-PJSFKKZ5.js";
84
88
  import "../chunk-ZVU6WMMU.js";
85
89
  import {
86
90
  DECISION_STOP_REASON,
91
+ HOOK_BUDGETS,
87
92
  KILL_REASON,
88
93
  OPENCODE_APPROVAL_EVENT,
89
94
  UNVERIFIABLE_APPROVAL_REASON,
90
95
  denyReasonFrom,
91
96
  effectiveWaitSeconds,
92
97
  gateOutputFor,
93
- hookWaitClamped,
94
- hookWaitDeadline,
98
+ hookMaxWaitSeconds,
95
99
  questionLimitHandBack,
96
100
  redactSecrets,
97
101
  refusesWhenUnanswered,
98
- resolveGate
99
- } from "../chunk-KYWTX4R2.js";
102
+ resolveGate,
103
+ unapprovedScopeReason
104
+ } from "../chunk-TRDHHF3A.js";
100
105
  import "../chunk-MLKGABMK.js";
101
106
 
102
107
  // bin/pushary-opencode-hook.ts
@@ -139,31 +144,36 @@ var describeFor = (input, lookup) => {
139
144
  if (lookup.tool) return describeToolCall(lookup.tool, lookup.input, "hook");
140
145
  return redactSecrets(input.title ?? "").trim().slice(0, HOOK_FALLBACK_MAX) || UNNAMED_ACTION;
141
146
  };
142
- var pushQuestion = async (apiKey, input, lookup, waitSeconds, mode, pollInterval = 2e3) => {
143
- const projectName = basename(input.cwd ?? process.cwd());
147
+ var pushQuestion = async (apiKey, input, lookup, waitSeconds, mode, scope, pollIntervalMs = 2e3) => {
144
148
  const description = describeFor(input, lookup);
145
- const result = await askUser(apiKey, {
146
- question: `Allow ${description}?`,
147
- type: "confirm",
148
- context: `Agent wants to run this in ${projectName}`,
149
+ const pushed = await pushQuestionAndWait(apiKey, {
150
+ description,
151
+ projectName: basename(input.cwd ?? process.cwd()),
149
152
  agentName: agentNameFor(input),
150
153
  sessionId: input.session_id,
151
- machineId: getMachineId(),
152
154
  toolName: lookup.tool,
153
155
  toolTarget: deriveToolTarget(lookup.tool, lookup.input),
154
- intent: readLastPrompt(input.session_id || DEFAULT_SESSION),
155
- action: description,
156
- blocker: deriveBlocker(mode),
157
- actionBody: deriveActionBody(lookup.tool, lookup.input),
158
- repoKey: repoKeyFor(input.cwd)
159
- }).catch(unavailableQuestionUnlessRefused);
160
- outstanding = { apiKey, correlationId: result.correlationId };
161
- const now = Date.now();
162
- const deadline = hookWaitDeadline(START_MS, waitSeconds, "opencode", now);
163
- const clampCut = hookWaitClamped(START_MS, waitSeconds, "opencode", now);
164
- const answer = await waitForQuestion(apiKey, result, deadline, pollInterval);
156
+ decision: {
157
+ intent: readLastPrompt(input.session_id || DEFAULT_SESSION),
158
+ action: description,
159
+ blocker: scope?.reason ?? deriveBlocker(mode),
160
+ actionBody: deriveActionBody(lookup.tool, lookup.input),
161
+ repoKey: repoKeyFor(input.cwd),
162
+ scopePath: scope?.path,
163
+ toolUseId: input.permission_id
164
+ }
165
+ }, {
166
+ agent: "opencode",
167
+ startMs: START_MS,
168
+ waitSeconds,
169
+ pollIntervalMs,
170
+ askFailure: "wait_as_unavailable",
171
+ onQuestionCreated: (correlationId) => {
172
+ outstanding = { apiKey, correlationId };
173
+ }
174
+ });
165
175
  outstanding = void 0;
166
- return { answer, localHandoff: !answer.answered && isLocalQuestionHandoff(result), clampCut };
176
+ return pushed;
167
177
  };
168
178
  var notifyApprovalNeeded = async (apiKey, input, lookup) => {
169
179
  try {
@@ -177,11 +187,13 @@ var notifyApprovalNeeded = async (apiKey, input, lookup) => {
177
187
  } catch {
178
188
  }
179
189
  };
190
+ var unlessOutOfScope = (scope, decision) => scope ? openCodeDeny(unapprovedScopeReason(scope.reason)) : decision;
180
191
  var openCodeStepsAside = (error, input) => {
181
192
  announceSubscriptionRequired(error.upgradeUrl, input.session_id);
182
193
  return openCodePass();
183
194
  };
184
- var handlePushOnly = async (apiKey, input, lookup, timeoutSeconds, timeoutAction) => {
195
+ var SCOPE_QUESTION_WAIT_SECONDS = hookMaxWaitSeconds("opencode") - HOOK_BUDGETS.opencode.guardSeconds;
196
+ var handlePushOnly = async (apiKey, input, lookup, timeoutSeconds, timeoutAction, scope) => {
185
197
  let pushed;
186
198
  try {
187
199
  pushed = await pushQuestion(
@@ -189,40 +201,41 @@ var handlePushOnly = async (apiKey, input, lookup, timeoutSeconds, timeoutAction
189
201
  input,
190
202
  lookup,
191
203
  effectiveWaitSeconds(timeoutAction, timeoutSeconds, "opencode"),
192
- "push_only"
204
+ "push_only",
205
+ scope
193
206
  );
194
207
  } catch (error) {
195
208
  if (error instanceof SubscriptionRequiredError) return openCodeStepsAside(error, input);
196
- if (isQuestionLimitRefusal(error)) return openCodeQuestionLimitDecision({ refusesUnanswered: refusesWhenUnanswered({ mode: "push_only", timeoutAction }) });
209
+ if (isQuestionLimitRefusal(error)) return unlessOutOfScope(scope, openCodeQuestionLimitDecision({ refusesUnanswered: refusesWhenUnanswered({ mode: "push_only", timeoutAction }) }));
197
210
  return openCodeDeny(UNVERIFIABLE_APPROVAL_REASON);
198
211
  }
199
212
  const { answer, localHandoff, clampCut } = pushed;
200
213
  if (isDecisionStopped(answer)) return openCodeDeny(DECISION_STOP_REASON);
201
- if (localHandoff) return openCodePass();
214
+ if (localHandoff) return unlessOutOfScope(scope, openCodePass());
202
215
  if (answer.answered) {
203
- if (isDeferAnswer(answer.value)) return openCodePass();
216
+ if (isDeferAnswer(answer.value)) return unlessOutOfScope(scope, openCodePass());
204
217
  return answer.value === "yes" ? openCodeAllow() : openCodeDeny(denyReasonFrom(answer.value, answer.note));
205
218
  }
206
- if (clampCut) return openCodePass();
207
- return openCodeTimeoutDecision(timeoutAction);
219
+ if (clampCut) return unlessOutOfScope(scope, openCodePass());
220
+ return unlessOutOfScope(scope, openCodeTimeoutDecision(timeoutAction));
208
221
  };
209
- var handlePushFirst = async (apiKey, input, lookup, pushFirstSeconds) => {
222
+ var handlePushFirst = async (apiKey, input, lookup, pushFirstSeconds, scope) => {
210
223
  let pushed;
211
224
  try {
212
- pushed = await pushQuestion(apiKey, input, lookup, pushFirstSeconds, "push_first", 1500);
225
+ pushed = await pushQuestion(apiKey, input, lookup, pushFirstSeconds, "push_first", scope, 1500);
213
226
  } catch (error) {
214
227
  if (error instanceof SubscriptionRequiredError) return openCodeStepsAside(error, input);
215
- if (isQuestionLimitRefusal(error)) return openCodeQuestionLimitDecision({ refusesUnanswered: false });
216
- return openCodePass();
228
+ if (isQuestionLimitRefusal(error)) return unlessOutOfScope(scope, openCodeQuestionLimitDecision({ refusesUnanswered: false }));
229
+ return unlessOutOfScope(scope, openCodePass());
217
230
  }
218
231
  const { answer, localHandoff } = pushed;
219
232
  if (isDecisionStopped(answer)) return openCodeDeny(DECISION_STOP_REASON);
220
233
  if (localHandoff) return openCodePass();
221
234
  if (answer.answered) {
222
- if (isDeferAnswer(answer.value)) return openCodePass();
235
+ if (isDeferAnswer(answer.value)) return unlessOutOfScope(scope, openCodePass());
223
236
  return answer.value === "yes" ? openCodeAllow() : openCodeDeny(denyReasonFrom(answer.value, answer.note));
224
237
  }
225
- return openCodePass();
238
+ return unlessOutOfScope(scope, openCodePass());
226
239
  };
227
240
  var decidePermission = async (input) => {
228
241
  let apiKey;
@@ -265,23 +278,28 @@ var decidePermission = async (input) => {
265
278
  repoKey: repoKeyFor(input.cwd),
266
279
  sessionId: input.session_id
267
280
  });
268
- if (verdict.kind === "kill") return openCodeDeny(KILL_REASON);
281
+ if (verdict.kind === "kill" || verdict.kind === "deny") {
282
+ await reportMachineDenial({ ...input, tool_name: lookup.tool, tool_input: lookup.input }, verdict, OPENCODE_AGENT);
283
+ return openCodeDeny(verdict.kind === "kill" ? KILL_REASON : verdict.reason);
284
+ }
269
285
  if (verdict.kind === "allow") return openCodeAllow();
270
- if (verdict.kind === "deny") return openCodeDeny(verdict.reason);
271
286
  if (verdict.kind === "defer") return openCodePass();
272
287
  const toolPolicy = verdict.policy;
288
+ const scope = scopeQuestionOf(verdict);
289
+ const pushFirstSeconds = scope ? SCOPE_QUESTION_WAIT_SECONDS : toolPolicy.pushFirstSeconds;
273
290
  switch (toolPolicy.mode) {
274
291
  case "push_only":
275
- return handlePushOnly(apiKey, input, lookup, toolPolicy.timeoutSeconds, toolPolicy.timeoutAction);
292
+ return handlePushOnly(apiKey, input, lookup, toolPolicy.timeoutSeconds, toolPolicy.timeoutAction, scope);
276
293
  case "terminal_only":
277
- return openCodePass();
294
+ return unlessOutOfScope(scope, openCodePass());
278
295
  case "push_first":
279
- return handlePushFirst(apiKey, input, lookup, toolPolicy.pushFirstSeconds);
296
+ return handlePushFirst(apiKey, input, lookup, pushFirstSeconds, scope);
280
297
  case "notify_only":
298
+ if (scope) return unlessOutOfScope(scope, openCodePass());
281
299
  await notifyApprovalNeeded(apiKey, input, lookup);
282
300
  return openCodePass();
283
301
  default:
284
- return handlePushFirst(apiKey, input, lookup, toolPolicy.pushFirstSeconds);
302
+ return handlePushFirst(apiKey, input, lookup, pushFirstSeconds, scope);
285
303
  }
286
304
  } catch {
287
305
  return openCodePass();
@@ -308,7 +326,7 @@ var withdrawAndExit = () => {
308
326
  };
309
327
  var main = async () => {
310
328
  process.on("SIGTERM", withdrawAndExit);
311
- const input = await readHookInput("opencode");
329
+ const input = await readHookInput("opencode", "", process.stdin, parseOpenCodeHookInput);
312
330
  if (!input) {
313
331
  return exitAfterClientReports(EXIT.OK);
314
332
  }
@@ -1,52 +1,53 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handlePermissionDenied
4
- } from "../chunk-FKH3KT4U.js";
5
- import "../chunk-YEV6CIQZ.js";
4
+ } from "../chunk-KILSIJTF.js";
5
+ import "../chunk-DXJUASTS.js";
6
6
  import {
7
7
  takeHookHoldBudget
8
- } from "../chunk-MYSBGQU6.js";
9
- import "../chunk-SE62HPB7.js";
10
- import "../chunk-K54Y2QFA.js";
8
+ } from "../chunk-B7BOENW7.js";
9
+ import "../chunk-XNCKBVZX.js";
10
+ import "../chunk-VFZ2PE6U.js";
11
+ import "../chunk-ISVHV2DP.js";
11
12
  import {
12
13
  readHookInput
13
- } from "../chunk-3ZQT5LQ3.js";
14
- import "../chunk-4UGNMAQ2.js";
15
- import "../chunk-2KYPNVRC.js";
16
- import "../chunk-T3UOM443.js";
14
+ } from "../chunk-2C45MJGK.js";
15
+ import "../chunk-EP6I3MQY.js";
16
+ import "../chunk-GBVTVTDF.js";
17
+ import "../chunk-PDAOZ2NF.js";
17
18
  import "../chunk-HXBQTPKC.js";
18
19
  import "../chunk-G66WIAST.js";
19
- import "../chunk-MA4KQLCT.js";
20
- import "../chunk-5TVOBKRE.js";
21
- import "../chunk-BJ7FGYF7.js";
22
- import "../chunk-7VPA5PXJ.js";
23
- import "../chunk-BE6JIWTM.js";
24
- import "../chunk-H5RGOO3B.js";
25
- import "../chunk-C32IT2TR.js";
20
+ import "../chunk-YZESBU7F.js";
21
+ import "../chunk-G4OVFWU4.js";
22
+ import "../chunk-EISUEJDT.js";
23
+ import "../chunk-COXNQUDP.js";
24
+ import "../chunk-GW3PE52Q.js";
25
+ import "../chunk-2UE2NDCX.js";
26
+ import "../chunk-V52J2THT.js";
26
27
  import "../chunk-YPY4YCIZ.js";
27
- import "../chunk-DE6ZYZZZ.js";
28
+ import "../chunk-SQRS4IF2.js";
28
29
  import "../chunk-XMSDA5WA.js";
29
- import "../chunk-C2NKILG3.js";
30
- import "../chunk-74MC5LRW.js";
31
- import "../chunk-N74WJAL6.js";
30
+ import "../chunk-TLCJCP5R.js";
31
+ import "../chunk-SE7P5BBK.js";
32
+ import "../chunk-NASQPMXW.js";
32
33
  import "../chunk-POFBE6ZY.js";
33
- import "../chunk-ZJKH3CTN.js";
34
- import "../chunk-DH23XX7X.js";
35
- import "../chunk-3OVRAD25.js";
34
+ import "../chunk-W6LKC5YD.js";
35
+ import "../chunk-4HDX77ND.js";
36
+ import "../chunk-RGXFBS56.js";
36
37
  import "../chunk-XHKBHWLX.js";
37
- import "../chunk-6ICAZ33G.js";
38
- import "../chunk-RCCISH7T.js";
39
- import "../chunk-YU3LDR5W.js";
40
- import "../chunk-DZI6MSR4.js";
41
- import "../chunk-ARRXCME5.js";
42
- import "../chunk-XU4DUX7K.js";
43
- import "../chunk-N4DQDFEP.js";
38
+ import "../chunk-U32N5JZO.js";
39
+ import "../chunk-TZYVXTLN.js";
40
+ import "../chunk-YZ7V2LVG.js";
41
+ import "../chunk-VMM6JCNQ.js";
42
+ import "../chunk-CBLFIWPI.js";
43
+ import "../chunk-KOZBVXXC.js";
44
+ import "../chunk-R3RTISDD.js";
44
45
  import "../chunk-YU2EUD7O.js";
45
46
  import "../chunk-T5I4PKOQ.js";
46
47
  import "../chunk-BG4HHB7E.js";
47
- import "../chunk-R5ZMI6BM.js";
48
+ import "../chunk-PJSFKKZ5.js";
48
49
  import "../chunk-ZVU6WMMU.js";
49
- import "../chunk-KYWTX4R2.js";
50
+ import "../chunk-TRDHHF3A.js";
50
51
  import "../chunk-MLKGABMK.js";
51
52
 
52
53
  // bin/pushary-permission-denied-hook.ts
@@ -1,58 +1,59 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handlePermissionRequest
4
- } from "../chunk-FKH3KT4U.js";
5
- import "../chunk-YEV6CIQZ.js";
4
+ } from "../chunk-KILSIJTF.js";
5
+ import "../chunk-DXJUASTS.js";
6
6
  import {
7
7
  takeHookHoldBudget
8
- } from "../chunk-MYSBGQU6.js";
9
- import "../chunk-SE62HPB7.js";
10
- import "../chunk-K54Y2QFA.js";
8
+ } from "../chunk-B7BOENW7.js";
9
+ import "../chunk-XNCKBVZX.js";
10
+ import "../chunk-VFZ2PE6U.js";
11
+ import "../chunk-ISVHV2DP.js";
11
12
  import {
12
13
  readToolHookInput
13
- } from "../chunk-3ZQT5LQ3.js";
14
- import "../chunk-4UGNMAQ2.js";
15
- import "../chunk-2KYPNVRC.js";
16
- import "../chunk-T3UOM443.js";
14
+ } from "../chunk-2C45MJGK.js";
15
+ import "../chunk-EP6I3MQY.js";
16
+ import "../chunk-GBVTVTDF.js";
17
+ import "../chunk-PDAOZ2NF.js";
17
18
  import "../chunk-HXBQTPKC.js";
18
19
  import "../chunk-G66WIAST.js";
19
20
  import {
20
21
  activeHookSource,
21
22
  normalizeToolCall,
22
23
  profileFromArgv
23
- } from "../chunk-MA4KQLCT.js";
24
- import "../chunk-5TVOBKRE.js";
25
- import "../chunk-BJ7FGYF7.js";
26
- import "../chunk-7VPA5PXJ.js";
24
+ } from "../chunk-YZESBU7F.js";
25
+ import "../chunk-G4OVFWU4.js";
26
+ import "../chunk-EISUEJDT.js";
27
+ import "../chunk-COXNQUDP.js";
27
28
  import {
28
29
  canonicalGateInputs
29
- } from "../chunk-BE6JIWTM.js";
30
- import "../chunk-H5RGOO3B.js";
31
- import "../chunk-C32IT2TR.js";
30
+ } from "../chunk-GW3PE52Q.js";
31
+ import "../chunk-2UE2NDCX.js";
32
+ import "../chunk-V52J2THT.js";
32
33
  import "../chunk-YPY4YCIZ.js";
33
- import "../chunk-DE6ZYZZZ.js";
34
+ import "../chunk-SQRS4IF2.js";
34
35
  import "../chunk-XMSDA5WA.js";
35
- import "../chunk-C2NKILG3.js";
36
- import "../chunk-74MC5LRW.js";
37
- import "../chunk-N74WJAL6.js";
36
+ import "../chunk-TLCJCP5R.js";
37
+ import "../chunk-SE7P5BBK.js";
38
+ import "../chunk-NASQPMXW.js";
38
39
  import "../chunk-POFBE6ZY.js";
39
- import "../chunk-ZJKH3CTN.js";
40
- import "../chunk-DH23XX7X.js";
41
- import "../chunk-3OVRAD25.js";
40
+ import "../chunk-W6LKC5YD.js";
41
+ import "../chunk-4HDX77ND.js";
42
+ import "../chunk-RGXFBS56.js";
42
43
  import "../chunk-XHKBHWLX.js";
43
- import "../chunk-6ICAZ33G.js";
44
- import "../chunk-RCCISH7T.js";
45
- import "../chunk-YU3LDR5W.js";
46
- import "../chunk-DZI6MSR4.js";
47
- import "../chunk-ARRXCME5.js";
48
- import "../chunk-XU4DUX7K.js";
49
- import "../chunk-N4DQDFEP.js";
44
+ import "../chunk-U32N5JZO.js";
45
+ import "../chunk-TZYVXTLN.js";
46
+ import "../chunk-YZ7V2LVG.js";
47
+ import "../chunk-VMM6JCNQ.js";
48
+ import "../chunk-CBLFIWPI.js";
49
+ import "../chunk-KOZBVXXC.js";
50
+ import "../chunk-R3RTISDD.js";
50
51
  import "../chunk-YU2EUD7O.js";
51
52
  import "../chunk-T5I4PKOQ.js";
52
53
  import "../chunk-BG4HHB7E.js";
53
- import "../chunk-R5ZMI6BM.js";
54
+ import "../chunk-PJSFKKZ5.js";
54
55
  import "../chunk-ZVU6WMMU.js";
55
- import "../chunk-KYWTX4R2.js";
56
+ import "../chunk-TRDHHF3A.js";
56
57
  import "../chunk-MLKGABMK.js";
57
58
 
58
59
  // bin/pushary-permission-hook.ts