@pushary/agent-hooks 0.95.0 → 0.95.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 (87) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +9 -0
  3. package/data/SKILL.md +31 -24
  4. package/data/cowork/SKILL.md +77 -0
  5. package/data/cursor-plugin/.cursor-plugin/plugin.json +1 -1
  6. package/data/cursor-plugin/skills/pushary/SKILL.md +30 -23
  7. package/data/vscode-plugin/.claude-plugin/plugin.json +1 -1
  8. package/data/vscode-plugin/skills/pushary/SKILL.md +30 -23
  9. package/dist/bin/pushary-bell-hook.js +17 -16
  10. package/dist/bin/pushary-bell.js +7 -7
  11. package/dist/bin/pushary-claude.js +18 -17
  12. package/dist/bin/pushary-clean.js +16 -15
  13. package/dist/bin/pushary-codex-bridge.js +9 -9
  14. package/dist/bin/pushary-codex-hook.js +20 -19
  15. package/dist/bin/pushary-codex.js +7 -7
  16. package/dist/bin/pushary-connect.js +8 -8
  17. package/dist/bin/pushary-cowork.d.ts +1 -0
  18. package/dist/bin/pushary-cowork.js +37 -0
  19. package/dist/bin/pushary-daemon.js +22 -21
  20. package/dist/bin/pushary-disconnect.js +8 -8
  21. package/dist/bin/pushary-doctor.js +20 -20
  22. package/dist/bin/pushary-elicitation-hook.js +16 -15
  23. package/dist/bin/pushary-gemini-bridge.js +9 -9
  24. package/dist/bin/pushary-gemini-hook.js +19 -18
  25. package/dist/bin/pushary-hook.js +23 -22
  26. package/dist/bin/pushary-login.js +11 -10
  27. package/dist/bin/pushary-logout.js +6 -6
  28. package/dist/bin/pushary-mode.js +5 -5
  29. package/dist/bin/pushary-notification-hook.js +18 -17
  30. package/dist/bin/pushary-opencode-hook.js +19 -18
  31. package/dist/bin/pushary-permission-denied-hook.js +21 -20
  32. package/dist/bin/pushary-permission-hook.js +21 -20
  33. package/dist/bin/pushary-post-hook.js +18 -17
  34. package/dist/bin/pushary-prompt-hook.js +18 -17
  35. package/dist/bin/pushary-session-end-hook.js +18 -17
  36. package/dist/bin/pushary-session-start-hook.js +21 -20
  37. package/dist/bin/pushary-setup.js +39 -27
  38. package/dist/bin/pushary-stats.js +4 -4
  39. package/dist/bin/pushary-status.js +10 -10
  40. package/dist/bin/pushary-stop-hook.js +18 -17
  41. package/dist/bin/pushary-stopfailure-hook.js +18 -17
  42. package/dist/bin/pushary-suggestions.js +2 -2
  43. package/dist/bin/pushary-transcript-register.js +15 -14
  44. package/dist/bin/pushary-transcripts.js +6 -6
  45. package/dist/bin/pushary-upgrade.js +15 -15
  46. package/dist/bin/pushary-wait.js +5 -5
  47. package/dist/bin/pushary.js +2 -1
  48. package/dist/{chunk-GHCGSEPE.js → chunk-2XUPP4WM.js} +1 -1
  49. package/dist/chunk-3ZUTNTZA.js +133 -0
  50. package/dist/{chunk-AYJ7NH5S.js → chunk-4XXUHWIK.js} +1 -1
  51. package/dist/chunk-5GLPYGKS.js +88 -0
  52. package/dist/{chunk-Z6CP5ZZD.js → chunk-6FAHPGCZ.js} +30 -0
  53. package/dist/{chunk-FH3YLP5Z.js → chunk-76XICHYT.js} +3 -3
  54. package/dist/{chunk-BMOFXRGS.js → chunk-7LUFYRH4.js} +3 -3
  55. package/dist/{chunk-OYNPLEXP.js → chunk-A4R6BZCK.js} +1 -1
  56. package/dist/{chunk-ROHFVGXM.js → chunk-AMZJ3CKW.js} +1 -1
  57. package/dist/{chunk-5SJ54JJO.js → chunk-CH6DTGQR.js} +3 -3
  58. package/dist/{chunk-4PE2SQVM.js → chunk-CKOLDI47.js} +1 -1
  59. package/dist/{chunk-OXTRFRMD.js → chunk-DNVDKHQD.js} +5 -5
  60. package/dist/{chunk-BSEAOCCQ.js → chunk-E3NF5CL2.js} +1 -1
  61. package/dist/{chunk-QGA2ZB4I.js → chunk-EPFDN2ZT.js} +1 -1
  62. package/dist/{chunk-2ORRI66J.js → chunk-EUAQ4YAN.js} +1 -1
  63. package/dist/{chunk-SFCGKE6U.js → chunk-FQUV5KTM.js} +6 -6
  64. package/dist/{chunk-MDQOBG5J.js → chunk-G24SEVCI.js} +7 -6
  65. package/dist/{chunk-LSXJH2HB.js → chunk-G4TL4YWH.js} +1 -1
  66. package/dist/{chunk-Z3Z4VK5F.js → chunk-GKIUEIDX.js} +4 -33
  67. package/dist/{chunk-6BIMJIRG.js → chunk-GUVCYYDK.js} +1 -1
  68. package/dist/{chunk-NVPYRDCT.js → chunk-IAEXPTXA.js} +1 -1
  69. package/dist/{chunk-Q5UFC2QK.js → chunk-IPHOUBTU.js} +1 -1
  70. package/dist/{chunk-UZFVNEEU.js → chunk-JDFB3YKG.js} +1 -1
  71. package/dist/{chunk-TDUTNYAQ.js → chunk-M7WWEFG6.js} +1 -1
  72. package/dist/{chunk-BVBEURWJ.js → chunk-MOY5X6HJ.js} +1 -1
  73. package/dist/chunk-PUZZELE6.js +37 -0
  74. package/dist/{chunk-2WVDQVI5.js → chunk-QF4RI5CD.js} +1 -1
  75. package/dist/{chunk-RH3TM7TO.js → chunk-QUE76J4H.js} +1 -1
  76. package/dist/{chunk-ZTJF6ANY.js → chunk-RVSEGFPD.js} +2 -2
  77. package/dist/{chunk-6LQAGVG2.js → chunk-UOTSWS5N.js} +7 -7
  78. package/dist/{chunk-YGZXYEVY.js → chunk-UW4LWAWY.js} +6 -6
  79. package/dist/{chunk-Y3UGCQQC.js → chunk-V27AHID3.js} +1 -1
  80. package/dist/{chunk-XY4GSZ3K.js → chunk-VX3BWMC5.js} +1 -1
  81. package/dist/{chunk-Y6XXFXVB.js → chunk-WB2C7VPF.js} +1 -1
  82. package/dist/{chunk-GI5UQSG7.js → chunk-WM5XMCID.js} +5 -131
  83. package/dist/{chunk-ODL52O5V.js → chunk-X7YWD6IS.js} +1 -1
  84. package/dist/{chunk-WY4ALDYN.js → chunk-YJAQRKH5.js} +1 -1
  85. package/dist/{chunk-43GMYSS4.js → chunk-ZDAT5KMU.js} +12 -0
  86. package/dist/src/index.js +10 -10
  87. package/package.json +2 -1
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readLedgerSummary
4
- } from "../chunk-2ORRI66J.js";
4
+ } from "../chunk-EUAQ4YAN.js";
5
5
  import {
6
6
  exitOnHelpFlag
7
- } from "../chunk-BVBEURWJ.js";
8
- import "../chunk-43GMYSS4.js";
7
+ } from "../chunk-MOY5X6HJ.js";
8
+ import "../chunk-ZDAT5KMU.js";
9
9
  import "../chunk-DINDL2CF.js";
10
10
  import "../chunk-KZERVKTD.js";
11
11
  import {
12
12
  getApiKey
13
13
  } from "../chunk-2UMNXADU.js";
14
- import "../chunk-Z6CP5ZZD.js";
14
+ import "../chunk-6FAHPGCZ.js";
15
15
 
16
16
  // bin/pushary-stats.ts
17
17
  exitOnHelpFlag("stats");
@@ -2,34 +2,34 @@
2
2
  import {
3
3
  describeLastSeen,
4
4
  listMachines
5
- } from "../chunk-QGA2ZB4I.js";
6
- import "../chunk-NVPYRDCT.js";
7
- import "../chunk-Y6XXFXVB.js";
5
+ } from "../chunk-EPFDN2ZT.js";
6
+ import "../chunk-IAEXPTXA.js";
7
+ import "../chunk-WB2C7VPF.js";
8
8
  import {
9
9
  describeReach,
10
10
  fetchChannels,
11
11
  reachVerdict
12
- } from "../chunk-ROHFVGXM.js";
12
+ } from "../chunk-AMZJ3CKW.js";
13
13
  import "../chunk-3EGEA4KH.js";
14
14
  import {
15
15
  checkApiKey,
16
16
  describeKeyCheck
17
- } from "../chunk-UZFVNEEU.js";
17
+ } from "../chunk-JDFB3YKG.js";
18
18
  import "../chunk-QCGNGEGE.js";
19
19
  import {
20
20
  createIo
21
21
  } from "../chunk-5RUIFDTP.js";
22
22
  import {
23
23
  exitOnHelpFlag
24
- } from "../chunk-BVBEURWJ.js";
25
- import "../chunk-43GMYSS4.js";
24
+ } from "../chunk-MOY5X6HJ.js";
25
+ import "../chunk-ZDAT5KMU.js";
26
26
  import {
27
27
  rejectUnknownFlags
28
28
  } from "../chunk-GMXKITVA.js";
29
29
  import "../chunk-DINDL2CF.js";
30
30
  import {
31
31
  readKeySource
32
- } from "../chunk-6BIMJIRG.js";
32
+ } from "../chunk-GUVCYYDK.js";
33
33
  import "../chunk-BC3VCZ3E.js";
34
34
  import "../chunk-EYRGBYZG.js";
35
35
  import "../chunk-SAF6HGAA.js";
@@ -39,10 +39,10 @@ import {
39
39
  import {
40
40
  EXIT
41
41
  } from "../chunk-KZERVKTD.js";
42
- import "../chunk-ODL52O5V.js";
42
+ import "../chunk-X7YWD6IS.js";
43
43
  import "../chunk-4LL6LG5X.js";
44
44
  import "../chunk-2UMNXADU.js";
45
- import "../chunk-Z6CP5ZZD.js";
45
+ import "../chunk-6FAHPGCZ.js";
46
46
 
47
47
  // src/status.ts
48
48
  var keySourceLine = (source) => {
@@ -1,43 +1,44 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-XY4GSZ3K.js";
5
- import "../chunk-YGZXYEVY.js";
4
+ } from "../chunk-VX3BWMC5.js";
5
+ import "../chunk-UW4LWAWY.js";
6
6
  import "../chunk-YKLCWWEI.js";
7
- import "../chunk-GI5UQSG7.js";
8
- import "../chunk-GHCGSEPE.js";
9
- import "../chunk-5SJ54JJO.js";
10
- import "../chunk-ZTJF6ANY.js";
11
- import "../chunk-BMOFXRGS.js";
7
+ import "../chunk-WM5XMCID.js";
8
+ import "../chunk-3ZUTNTZA.js";
9
+ import "../chunk-2XUPP4WM.js";
10
+ import "../chunk-CH6DTGQR.js";
11
+ import "../chunk-RVSEGFPD.js";
12
+ import "../chunk-7LUFYRH4.js";
12
13
  import "../chunk-DSTLA2TC.js";
13
14
  import "../chunk-EZIEXHYM.js";
14
- import "../chunk-Q5UFC2QK.js";
15
+ import "../chunk-IPHOUBTU.js";
15
16
  import "../chunk-EQRS3SGM.js";
16
- import "../chunk-2WVDQVI5.js";
17
+ import "../chunk-QF4RI5CD.js";
17
18
  import "../chunk-XHKBHWLX.js";
18
19
  import "../chunk-L4ZCFMWW.js";
19
20
  import {
20
21
  handleStop,
21
22
  handleSubagentStop,
22
23
  isSubagentStop
23
- } from "../chunk-OXTRFRMD.js";
24
+ } from "../chunk-DNVDKHQD.js";
24
25
  import "../chunk-RER3FRTD.js";
25
- import "../chunk-4PE2SQVM.js";
26
- import "../chunk-Y3UGCQQC.js";
27
- import "../chunk-NVPYRDCT.js";
28
- import "../chunk-Y6XXFXVB.js";
26
+ import "../chunk-CKOLDI47.js";
27
+ import "../chunk-V27AHID3.js";
28
+ import "../chunk-IAEXPTXA.js";
29
+ import "../chunk-WB2C7VPF.js";
29
30
  import "../chunk-GMXKITVA.js";
30
31
  import "../chunk-DINDL2CF.js";
31
- import "../chunk-6BIMJIRG.js";
32
+ import "../chunk-GUVCYYDK.js";
32
33
  import "../chunk-BC3VCZ3E.js";
33
34
  import "../chunk-EYRGBYZG.js";
34
35
  import "../chunk-SAF6HGAA.js";
35
36
  import "../chunk-7QLSKOSU.js";
36
37
  import "../chunk-KZERVKTD.js";
37
- import "../chunk-ODL52O5V.js";
38
+ import "../chunk-X7YWD6IS.js";
38
39
  import "../chunk-4LL6LG5X.js";
39
40
  import "../chunk-2UMNXADU.js";
40
- import "../chunk-Z6CP5ZZD.js";
41
+ import "../chunk-6FAHPGCZ.js";
41
42
 
42
43
  // bin/pushary-stop-hook.ts
43
44
  var main = async () => {
@@ -1,41 +1,42 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-XY4GSZ3K.js";
5
- import "../chunk-YGZXYEVY.js";
4
+ } from "../chunk-VX3BWMC5.js";
5
+ import "../chunk-UW4LWAWY.js";
6
6
  import "../chunk-YKLCWWEI.js";
7
- import "../chunk-GI5UQSG7.js";
8
- import "../chunk-GHCGSEPE.js";
9
- import "../chunk-5SJ54JJO.js";
10
- import "../chunk-ZTJF6ANY.js";
11
- import "../chunk-BMOFXRGS.js";
7
+ import "../chunk-WM5XMCID.js";
8
+ import "../chunk-3ZUTNTZA.js";
9
+ import "../chunk-2XUPP4WM.js";
10
+ import "../chunk-CH6DTGQR.js";
11
+ import "../chunk-RVSEGFPD.js";
12
+ import "../chunk-7LUFYRH4.js";
12
13
  import "../chunk-DSTLA2TC.js";
13
14
  import "../chunk-EZIEXHYM.js";
14
- import "../chunk-Q5UFC2QK.js";
15
+ import "../chunk-IPHOUBTU.js";
15
16
  import "../chunk-EQRS3SGM.js";
16
- import "../chunk-2WVDQVI5.js";
17
+ import "../chunk-QF4RI5CD.js";
17
18
  import "../chunk-XHKBHWLX.js";
18
19
  import "../chunk-L4ZCFMWW.js";
19
20
  import {
20
21
  handleStopFailure
21
- } from "../chunk-OXTRFRMD.js";
22
+ } from "../chunk-DNVDKHQD.js";
22
23
  import "../chunk-RER3FRTD.js";
23
- import "../chunk-4PE2SQVM.js";
24
- import "../chunk-Y3UGCQQC.js";
25
- import "../chunk-NVPYRDCT.js";
26
- import "../chunk-Y6XXFXVB.js";
24
+ import "../chunk-CKOLDI47.js";
25
+ import "../chunk-V27AHID3.js";
26
+ import "../chunk-IAEXPTXA.js";
27
+ import "../chunk-WB2C7VPF.js";
27
28
  import "../chunk-GMXKITVA.js";
28
29
  import "../chunk-DINDL2CF.js";
29
- import "../chunk-6BIMJIRG.js";
30
+ import "../chunk-GUVCYYDK.js";
30
31
  import "../chunk-BC3VCZ3E.js";
31
32
  import "../chunk-EYRGBYZG.js";
32
33
  import "../chunk-SAF6HGAA.js";
33
34
  import "../chunk-7QLSKOSU.js";
34
35
  import "../chunk-KZERVKTD.js";
35
- import "../chunk-ODL52O5V.js";
36
+ import "../chunk-X7YWD6IS.js";
36
37
  import "../chunk-4LL6LG5X.js";
37
38
  import "../chunk-2UMNXADU.js";
38
- import "../chunk-Z6CP5ZZD.js";
39
+ import "../chunk-6FAHPGCZ.js";
39
40
 
40
41
  // bin/pushary-stopfailure-hook.ts
41
42
  var main = async () => {
@@ -4,8 +4,8 @@ import {
4
4
  } from "../chunk-5RUIFDTP.js";
5
5
  import {
6
6
  exitOnHelpFlag
7
- } from "../chunk-BVBEURWJ.js";
8
- import "../chunk-43GMYSS4.js";
7
+ } from "../chunk-MOY5X6HJ.js";
8
+ import "../chunk-ZDAT5KMU.js";
9
9
  import {
10
10
  rejectUnknownFlags
11
11
  } from "../chunk-GMXKITVA.js";
@@ -1,33 +1,34 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  registerTranscript
4
- } from "../chunk-YGZXYEVY.js";
4
+ } from "../chunk-UW4LWAWY.js";
5
5
  import "../chunk-YKLCWWEI.js";
6
- import "../chunk-GI5UQSG7.js";
7
- import "../chunk-GHCGSEPE.js";
8
- import "../chunk-5SJ54JJO.js";
9
- import "../chunk-ZTJF6ANY.js";
10
- import "../chunk-BMOFXRGS.js";
6
+ import "../chunk-WM5XMCID.js";
7
+ import "../chunk-3ZUTNTZA.js";
8
+ import "../chunk-2XUPP4WM.js";
9
+ import "../chunk-CH6DTGQR.js";
10
+ import "../chunk-RVSEGFPD.js";
11
+ import "../chunk-7LUFYRH4.js";
11
12
  import "../chunk-DSTLA2TC.js";
12
13
  import "../chunk-EZIEXHYM.js";
13
- import "../chunk-Q5UFC2QK.js";
14
+ import "../chunk-IPHOUBTU.js";
14
15
  import "../chunk-EQRS3SGM.js";
15
- import "../chunk-2WVDQVI5.js";
16
+ import "../chunk-QF4RI5CD.js";
16
17
  import "../chunk-XHKBHWLX.js";
17
18
  import "../chunk-L4ZCFMWW.js";
18
- import "../chunk-Y3UGCQQC.js";
19
- import "../chunk-NVPYRDCT.js";
20
- import "../chunk-Y6XXFXVB.js";
19
+ import "../chunk-V27AHID3.js";
20
+ import "../chunk-IAEXPTXA.js";
21
+ import "../chunk-WB2C7VPF.js";
21
22
  import "../chunk-GMXKITVA.js";
22
23
  import "../chunk-DINDL2CF.js";
23
- import "../chunk-6BIMJIRG.js";
24
+ import "../chunk-GUVCYYDK.js";
24
25
  import "../chunk-BC3VCZ3E.js";
25
26
  import "../chunk-7QLSKOSU.js";
26
27
  import "../chunk-KZERVKTD.js";
27
- import "../chunk-ODL52O5V.js";
28
+ import "../chunk-X7YWD6IS.js";
28
29
  import "../chunk-4LL6LG5X.js";
29
30
  import "../chunk-2UMNXADU.js";
30
- import "../chunk-Z6CP5ZZD.js";
31
+ import "../chunk-6FAHPGCZ.js";
31
32
 
32
33
  // bin/pushary-transcript-register.ts
33
34
  var raw = "";
@@ -6,19 +6,19 @@ import {
6
6
  } from "../chunk-YKLCWWEI.js";
7
7
  import {
8
8
  transcriptsEnabled
9
- } from "../chunk-2WVDQVI5.js";
9
+ } from "../chunk-QF4RI5CD.js";
10
10
  import {
11
11
  exitOnHelpFlag
12
- } from "../chunk-BVBEURWJ.js";
13
- import "../chunk-43GMYSS4.js";
12
+ } from "../chunk-MOY5X6HJ.js";
13
+ import "../chunk-ZDAT5KMU.js";
14
14
  import "../chunk-DINDL2CF.js";
15
- import "../chunk-6BIMJIRG.js";
15
+ import "../chunk-GUVCYYDK.js";
16
16
  import "../chunk-BC3VCZ3E.js";
17
17
  import "../chunk-KZERVKTD.js";
18
- import "../chunk-ODL52O5V.js";
18
+ import "../chunk-X7YWD6IS.js";
19
19
  import "../chunk-4LL6LG5X.js";
20
20
  import "../chunk-2UMNXADU.js";
21
- import "../chunk-Z6CP5ZZD.js";
21
+ import "../chunk-6FAHPGCZ.js";
22
22
 
23
23
  // bin/pushary-transcripts.ts
24
24
  exitOnHelpFlag("transcripts");
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  reapplyAllAgents
4
- } from "../chunk-SFCGKE6U.js";
5
- import "../chunk-LSXJH2HB.js";
4
+ } from "../chunk-FQUV5KTM.js";
5
+ import "../chunk-G4TL4YWH.js";
6
6
  import {
7
7
  waitForMachineReadiness
8
- } from "../chunk-QGA2ZB4I.js";
9
- import "../chunk-FH3YLP5Z.js";
8
+ } from "../chunk-EPFDN2ZT.js";
9
+ import "../chunk-76XICHYT.js";
10
10
  import {
11
11
  detectProviderLiveCapabilities,
12
12
  hasSpawnProvider,
13
13
  resolveControlPolicy
14
14
  } from "../chunk-3OXHYPZG.js";
15
- import "../chunk-5SJ54JJO.js";
15
+ import "../chunk-CH6DTGQR.js";
16
16
  import {
17
17
  daemonHasRemoteProof,
18
18
  daemonServiceManagerAvailable,
@@ -23,8 +23,8 @@ import {
23
23
  replaceDaemonService,
24
24
  stopDaemonService,
25
25
  waitForDaemonRemoteProof
26
- } from "../chunk-ZTJF6ANY.js";
27
- import "../chunk-BMOFXRGS.js";
26
+ } from "../chunk-RVSEGFPD.js";
27
+ import "../chunk-7LUFYRH4.js";
28
28
  import "../chunk-EZIEXHYM.js";
29
29
  import {
30
30
  needsShell
@@ -34,33 +34,33 @@ import {
34
34
  npmErrorMessage,
35
35
  resolveGlobalBinary
36
36
  } from "../chunk-L4ZCFMWW.js";
37
- import "../chunk-Y3UGCQQC.js";
38
- import "../chunk-NVPYRDCT.js";
37
+ import "../chunk-V27AHID3.js";
38
+ import "../chunk-IAEXPTXA.js";
39
39
  import {
40
40
  claudeJson,
41
41
  codexConfigToml,
42
42
  cursorPluginDir,
43
43
  geminiSettings,
44
44
  vscodePluginDir
45
- } from "../chunk-Y6XXFXVB.js";
45
+ } from "../chunk-WB2C7VPF.js";
46
46
  import {
47
47
  exitOnHelpFlag
48
- } from "../chunk-BVBEURWJ.js";
49
- import "../chunk-43GMYSS4.js";
48
+ } from "../chunk-MOY5X6HJ.js";
49
+ import "../chunk-ZDAT5KMU.js";
50
50
  import {
51
51
  isNewerVersion
52
52
  } from "../chunk-DINDL2CF.js";
53
53
  import {
54
54
  readControlMode
55
- } from "../chunk-6BIMJIRG.js";
55
+ } from "../chunk-GUVCYYDK.js";
56
56
  import "../chunk-BC3VCZ3E.js";
57
57
  import "../chunk-KZERVKTD.js";
58
- import "../chunk-ODL52O5V.js";
58
+ import "../chunk-X7YWD6IS.js";
59
59
  import "../chunk-4LL6LG5X.js";
60
60
  import {
61
61
  getApiKey
62
62
  } from "../chunk-2UMNXADU.js";
63
- import "../chunk-Z6CP5ZZD.js";
63
+ import "../chunk-6FAHPGCZ.js";
64
64
 
65
65
  // bin/pushary-upgrade.ts
66
66
  import { existsSync } from "fs";
@@ -4,15 +4,15 @@ import {
4
4
  } from "../chunk-IIENZE2J.js";
5
5
  import {
6
6
  exitOnFailedResponse
7
- } from "../chunk-WY4ALDYN.js";
8
- import "../chunk-UZFVNEEU.js";
7
+ } from "../chunk-YJAQRKH5.js";
8
+ import "../chunk-JDFB3YKG.js";
9
9
  import {
10
10
  createIo
11
11
  } from "../chunk-5RUIFDTP.js";
12
12
  import {
13
13
  exitOnHelpFlag
14
- } from "../chunk-BVBEURWJ.js";
15
- import "../chunk-43GMYSS4.js";
14
+ } from "../chunk-MOY5X6HJ.js";
15
+ import "../chunk-ZDAT5KMU.js";
16
16
  import {
17
17
  rejectUnknownFlags
18
18
  } from "../chunk-GMXKITVA.js";
@@ -28,7 +28,7 @@ import {
28
28
  getApiKey,
29
29
  getBaseUrl
30
30
  } from "../chunk-2UMNXADU.js";
31
- import "../chunk-Z6CP5ZZD.js";
31
+ import "../chunk-6FAHPGCZ.js";
32
32
 
33
33
  // bin/pushary-wait.ts
34
34
  exitOnHelpFlag("wait");
@@ -3,7 +3,7 @@ import {
3
3
  COMMANDS,
4
4
  isCommandName,
5
5
  renderHelp
6
- } from "../chunk-43GMYSS4.js";
6
+ } from "../chunk-ZDAT5KMU.js";
7
7
  import {
8
8
  getPackageVersion
9
9
  } from "../chunk-DINDL2CF.js";
@@ -24,6 +24,7 @@ var supportsRuntime = (version) => {
24
24
  // bin/pushary.ts
25
25
  var LOADERS = {
26
26
  setup: () => import("./pushary-setup.js"),
27
+ cowork: () => import("./pushary-cowork.js"),
27
28
  claude: () => import("./pushary-claude.js"),
28
29
  daemon: () => import("./pushary-daemon.js"),
29
30
  status: () => import("./pushary-status.js"),
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  HOOK_LOCATOR_BINARY
3
- } from "./chunk-Z6CP5ZZD.js";
3
+ } from "./chunk-6FAHPGCZ.js";
4
4
 
5
5
  // src/diagnostics/bridge.ts
6
6
  import { execFileSync } from "child_process";
@@ -0,0 +1,133 @@
1
+ import {
2
+ parseFlags
3
+ } from "./chunk-GMXKITVA.js";
4
+ import {
5
+ UsageError
6
+ } from "./chunk-7QLSKOSU.js";
7
+ import {
8
+ isValidApiKey
9
+ } from "./chunk-6FAHPGCZ.js";
10
+
11
+ // src/setup/options.ts
12
+ var AGENT_CHOICES = ["claude_code", "codex", "gemini_cli", "hermes", "cursor", "vscode", "opencode", "custom"];
13
+ var CONNECT_MODES = ["app", "browser", "web", "none"];
14
+ var CONNECT_ALIASES = { auto: "app", pwa: "web" };
15
+ var parseConnectMode = (raw) => {
16
+ const value = raw.trim().toLowerCase();
17
+ if (Object.hasOwn(CONNECT_ALIASES, value)) return CONNECT_ALIASES[value];
18
+ if (CONNECT_MODES.includes(value)) return value;
19
+ throw new UsageError(`--connect must be one of: ${CONNECT_MODES.join(", ")} (got ${raw})`);
20
+ };
21
+ var VERIFY_MODES = ["roundtrip", "push", "none"];
22
+ var parseVerifyMode = (raw) => {
23
+ const value = raw.trim().toLowerCase();
24
+ if (VERIFY_MODES.includes(value)) return value;
25
+ throw new UsageError(`--verify must be one of: ${VERIFY_MODES.join(", ")} (got ${raw})`);
26
+ };
27
+ var CONTROL_MODES = ["auto", "on", "off"];
28
+ var parseControlMode = (raw) => {
29
+ const value = raw.trim().toLowerCase();
30
+ if (CONTROL_MODES.includes(value)) return value;
31
+ throw new UsageError(`--control must be one of: ${CONTROL_MODES.join(", ")} (got ${raw})`);
32
+ };
33
+ var effectiveVerify = (options, context) => {
34
+ if (options.verifyExplicit) return options.verify;
35
+ if (options.verify === "roundtrip") return "roundtrip";
36
+ return context.paired ? "roundtrip" : options.verify;
37
+ };
38
+ var SETUP_FLAGS = {
39
+ bools: ["key-stdin", "skip-phone", "yes", "y", "json", "dry-run", "take-over-hooks", "help", "h"],
40
+ values: ["key", "connect", "agents", "verify", "control", "transcripts"]
41
+ };
42
+ var effectiveControlMode = (options, stored, configPresent) => options.controlExplicit ? options.control : stored ?? (configPresent ? null : options.control);
43
+ var isAgentChoice = (value) => AGENT_CHOICES.includes(value);
44
+ var parseAgentSelection = (raw, yes) => {
45
+ if (raw === void 0) {
46
+ return yes ? { kind: "auto" } : { kind: "ask" };
47
+ }
48
+ const value = raw.trim().toLowerCase();
49
+ if (value === "auto") return { kind: "auto" };
50
+ if (value === "none") return { kind: "none" };
51
+ const parts = value.split(",").map((part) => part.trim()).filter((part) => part !== "");
52
+ if (parts.length === 0) throw new UsageError("--agents needs a value");
53
+ const unknown = parts.filter((part) => !isAgentChoice(part));
54
+ if (unknown.length > 0) {
55
+ throw new UsageError(
56
+ `--agents does not know: ${unknown.join(", ")}. Use auto, none, or any of: ${AGENT_CHOICES.join(", ")}`
57
+ );
58
+ }
59
+ return { kind: "explicit", agents: [...new Set(parts)] };
60
+ };
61
+ var parseSetupOptions = (input) => {
62
+ const flags = parseFlags(input.argv, SETUP_FLAGS);
63
+ const stray = [
64
+ ...flags.command !== void 0 && flags.command !== "setup" ? [flags.command] : [],
65
+ ...flags.rest
66
+ ];
67
+ if (stray.length > 0) {
68
+ throw new UsageError(
69
+ `setup takes no positional arguments (got ${stray.join(", ")}). Did you mean --agents ${stray[0]}?`
70
+ );
71
+ }
72
+ const yes = flags.bools.has("yes") || flags.bools.has("y");
73
+ const help = flags.bools.has("help") || flags.bools.has("h");
74
+ const agentsFlag = flags.values.get("agents");
75
+ const agents = parseAgentSelection(agentsFlag, yes);
76
+ const connectRaw = flags.values.get("connect");
77
+ const connectMode = connectRaw === void 0 ? "app" : parseConnectMode(connectRaw);
78
+ const verifyRaw = flags.values.get("verify");
79
+ const controlRaw = flags.values.get("control");
80
+ const transcriptsRaw = flags.values.get("transcripts")?.trim().toLowerCase();
81
+ if (transcriptsRaw !== void 0 && transcriptsRaw !== "on" && transcriptsRaw !== "off") {
82
+ throw new UsageError(`--transcripts must be one of: on, off (got ${transcriptsRaw})`);
83
+ }
84
+ const nonInteractive = yes || agentsFlag !== void 0 || flags.bools.has("json") || !input.stdinIsTty;
85
+ const verify = verifyRaw !== void 0 ? parseVerifyMode(verifyRaw) : nonInteractive ? "push" : "roundtrip";
86
+ const key = flags.values.get("key")?.trim() || null;
87
+ const keyStdin = flags.bools.has("key-stdin");
88
+ if (key && keyStdin) {
89
+ throw new UsageError("Pass either --key or --key-stdin, not both");
90
+ }
91
+ if (key && !isValidApiKey(key)) {
92
+ throw new UsageError("--key is not a valid API key. Expected the pk_xxx.xxx shape from pushary.com/dashboard/agent/settings");
93
+ }
94
+ return {
95
+ connectMode,
96
+ connectExplicit: connectRaw !== void 0,
97
+ // `--connect none` and `--skip-phone` are the same instruction, so they
98
+ // resolve to the same field rather than being checked separately at the two
99
+ // call sites that would inevitably drift apart.
100
+ skipPhone: flags.bools.has("skip-phone") || connectMode === "none",
101
+ // Anything that means "there is nobody to answer a prompt". A non-TTY stdin
102
+ // is included because that is the case that used to hang: it is better to
103
+ // take the defaults and say so than to wait forever for a keypress.
104
+ //
105
+ // --json counts. Under it stdout carries exactly one object and every human
106
+ // line is redirected to stderr, so a prompt has nowhere to render: the
107
+ // question goes to stderr while the run blocks on a keypress the caller
108
+ // cannot see it is waiting for, and whatever is reading stdout waits forever
109
+ // for an object that never arrives. Asking for machine-readable output is
110
+ // itself a statement that no human is watching.
111
+ nonInteractive,
112
+ json: flags.bools.has("json"),
113
+ dryRun: flags.bools.has("dry-run"),
114
+ help,
115
+ agents,
116
+ key,
117
+ keyStdin,
118
+ verify,
119
+ verifyExplicit: verifyRaw !== void 0,
120
+ control: controlRaw === void 0 ? "auto" : parseControlMode(controlRaw),
121
+ controlExplicit: controlRaw !== void 0,
122
+ transcripts: transcriptsRaw === void 0 ? null : transcriptsRaw === "on",
123
+ takeOverHooks: flags.bools.has("take-over-hooks")
124
+ };
125
+ };
126
+
127
+ export {
128
+ AGENT_CHOICES,
129
+ effectiveVerify,
130
+ SETUP_FLAGS,
131
+ effectiveControlMode,
132
+ parseSetupOptions
133
+ };
@@ -3,7 +3,7 @@ import {
3
3
  decodePublicKey,
4
4
  generateSessionKey,
5
5
  wrapSessionKey
6
- } from "./chunk-Q5UFC2QK.js";
6
+ } from "./chunk-IPHOUBTU.js";
7
7
  import {
8
8
  fetchTranscriptRecipients,
9
9
  uploadTranscriptRecords
@@ -0,0 +1,88 @@
1
+ import {
2
+ SETUP_FLAGS
3
+ } from "./chunk-3ZUTNTZA.js";
4
+ import {
5
+ parseFlags
6
+ } from "./chunk-GMXKITVA.js";
7
+ import {
8
+ UsageError
9
+ } from "./chunk-7QLSKOSU.js";
10
+ import {
11
+ CLAUDE_CONNECTOR_GUIDE,
12
+ CLAUDE_CONNECTOR_STEPS,
13
+ CLAUDE_CONNECTOR_TEST,
14
+ CLAUDE_CONNECTOR_URL,
15
+ COWORK_CONNECTOR_LIMIT,
16
+ COWORK_STANDING_INSTRUCTIONS
17
+ } from "./chunk-6FAHPGCZ.js";
18
+
19
+ // src/cli/cowork.ts
20
+ import { readFileSync } from "fs";
21
+ var coworkSetup = {
22
+ status: "manual_setup_required",
23
+ connectorUrl: CLAUDE_CONNECTOR_URL,
24
+ guideUrl: CLAUDE_CONNECTOR_GUIDE,
25
+ steps: CLAUDE_CONNECTOR_STEPS,
26
+ testPrompt: CLAUDE_CONNECTOR_TEST,
27
+ instructions: COWORK_STANDING_INSTRUCTIONS,
28
+ capability: COWORK_CONNECTOR_LIMIT
29
+ };
30
+ var renderCoworkSetup = () => [
31
+ "Claude Desktop / Cowork setup",
32
+ "",
33
+ CLAUDE_CONNECTOR_URL,
34
+ "",
35
+ ...CLAUDE_CONNECTOR_STEPS.map((step, i) => `${i + 1}. ${step}`),
36
+ "",
37
+ `Test prompt: ${CLAUDE_CONNECTOR_TEST}`,
38
+ "",
39
+ COWORK_CONNECTOR_LIMIT,
40
+ "",
41
+ "Cowork supports plugin hooks on supported versions. This connector setup does not install or verify native permission hooks.",
42
+ "Run pushary cowork --instructions for the standing instructions, or --skill for the uploadable SKILL.md.",
43
+ `Full guide: ${CLAUDE_CONNECTOR_GUIDE}`,
44
+ ""
45
+ ].join("\n");
46
+ var parseCoworkOptions = (argv) => {
47
+ const flags = parseFlags(argv, { bools: ["json", "open", "instructions", "skill", "help", "h"], values: [] });
48
+ if (flags.command && flags.command !== "cowork" || flags.rest.length > 0) {
49
+ throw new UsageError("cowork takes no positional arguments. Run pushary cowork --help.");
50
+ }
51
+ const formats = ["json", "instructions", "skill"].filter((flag) => flags.bools.has(flag));
52
+ if (formats.length > 1) throw new UsageError("Choose only one of --json, --instructions, or --skill.");
53
+ return { format: formats[0] ?? "guide", open: flags.bools.has("open") };
54
+ };
55
+ var coworkOutput = (format) => {
56
+ if (format === "json") return JSON.stringify(coworkSetup, null, 2) + "\n";
57
+ if (format === "instructions") return COWORK_STANDING_INSTRUCTIONS + "\n";
58
+ if (format === "skill") {
59
+ for (const relative of ["../../data/cowork/SKILL.md", "../data/cowork/SKILL.md"]) {
60
+ try {
61
+ return readFileSync(new URL(relative, import.meta.url), "utf8");
62
+ } catch (error) {
63
+ if (error.code !== "ENOENT") throw error;
64
+ }
65
+ }
66
+ throw new Error("Packaged Cowork skill is missing. Reinstall @pushary/agent-hooks.");
67
+ }
68
+ return renderCoworkSetup();
69
+ };
70
+ var coworkSelection = (argv) => {
71
+ const flags = parseFlags(argv, SETUP_FLAGS);
72
+ const selected = flags.values.get("agents")?.toLowerCase().split(",").map((value) => value.trim()) ?? [];
73
+ const aliases = /* @__PURE__ */ new Set(["cowork", "claude_cowork", "claude_desktop", "claude_chat"]);
74
+ if (!selected.some((value) => aliases.has(value))) return null;
75
+ if (selected.some((value) => !aliases.has(value)) || flags.rest.length > 0 || flags.command && flags.command !== "setup") {
76
+ throw new UsageError("Set up Cowork with pushary cowork, then run setup separately for your CLI agents.");
77
+ }
78
+ if ([...flags.values.keys()].some((key) => key !== "agents") || flags.bools.has("key-stdin") || flags.bools.has("take-over-hooks")) {
79
+ throw new UsageError("Cowork uses connector OAuth. Use pushary cowork; CLI key, control, and hook options do not apply.");
80
+ }
81
+ return { json: flags.bools.has("json") };
82
+ };
83
+
84
+ export {
85
+ parseCoworkOptions,
86
+ coworkOutput,
87
+ coworkSelection
88
+ };