pushary 1.8.0

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 (186) hide show
  1. package/CHANGELOG.md +1943 -0
  2. package/LICENSE +21 -0
  3. package/README.md +330 -0
  4. package/data/SKILL.md +591 -0
  5. package/data/cowork/SKILL.md +77 -0
  6. package/data/cursor-plugin/.cursor-plugin/plugin.json +25 -0
  7. package/data/cursor-plugin/CHANGELOG.md +70 -0
  8. package/data/cursor-plugin/CONTRIBUTING.md +40 -0
  9. package/data/cursor-plugin/LICENSE +21 -0
  10. package/data/cursor-plugin/README.md +113 -0
  11. package/data/cursor-plugin/SECURITY.md +33 -0
  12. package/data/cursor-plugin/assets/logo.png +0 -0
  13. package/data/cursor-plugin/commands/notify-when-done.md +14 -0
  14. package/data/cursor-plugin/commands/pushary-test.md +13 -0
  15. package/data/cursor-plugin/hooks/hooks.json +75 -0
  16. package/data/cursor-plugin/mcp.json +11 -0
  17. package/data/cursor-plugin/rules/pushary.mdc +40 -0
  18. package/data/cursor-plugin/scripts/pushary-gate.mjs +724 -0
  19. package/data/cursor-plugin/scripts/pushary-gate.test.mjs +137 -0
  20. package/data/cursor-plugin/scripts/redaction.mjs +51 -0
  21. package/data/cursor-plugin/skills/pushary/SKILL.md +584 -0
  22. package/data/vscode-plugin/.claude-plugin/plugin.json +28 -0
  23. package/data/vscode-plugin/.mcp.json +11 -0
  24. package/data/vscode-plugin/CHANGELOG.md +49 -0
  25. package/data/vscode-plugin/CONTRIBUTING.md +40 -0
  26. package/data/vscode-plugin/LICENSE +21 -0
  27. package/data/vscode-plugin/README.md +128 -0
  28. package/data/vscode-plugin/SECURITY.md +56 -0
  29. package/data/vscode-plugin/assets/logo.png +0 -0
  30. package/data/vscode-plugin/commands/notify-when-done.md +14 -0
  31. package/data/vscode-plugin/commands/pushary-test.md +13 -0
  32. package/data/vscode-plugin/hooks/hooks.json +60 -0
  33. package/data/vscode-plugin/scripts/pushary-gate.mjs +762 -0
  34. package/data/vscode-plugin/scripts/redaction.mjs +51 -0
  35. package/data/vscode-plugin/skills/pushary/SKILL.md +584 -0
  36. package/dist/bin/pushary-bell-hook.d.ts +1 -0
  37. package/dist/bin/pushary-bell-hook.js +46 -0
  38. package/dist/bin/pushary-bell.d.ts +1 -0
  39. package/dist/bin/pushary-bell.js +146 -0
  40. package/dist/bin/pushary-claude.d.ts +1 -0
  41. package/dist/bin/pushary-claude.js +1916 -0
  42. package/dist/bin/pushary-clean.d.ts +1 -0
  43. package/dist/bin/pushary-clean.js +1300 -0
  44. package/dist/bin/pushary-codex-bridge.d.ts +1 -0
  45. package/dist/bin/pushary-codex-bridge.js +599 -0
  46. package/dist/bin/pushary-codex-hook.d.ts +1 -0
  47. package/dist/bin/pushary-codex-hook.js +886 -0
  48. package/dist/bin/pushary-codex.d.ts +1 -0
  49. package/dist/bin/pushary-codex.js +125 -0
  50. package/dist/bin/pushary-connect.d.ts +1 -0
  51. package/dist/bin/pushary-connect.js +100 -0
  52. package/dist/bin/pushary-cowork.d.ts +1 -0
  53. package/dist/bin/pushary-cowork.js +36 -0
  54. package/dist/bin/pushary-daemon-supervisor.d.ts +1 -0
  55. package/dist/bin/pushary-daemon-supervisor.js +27 -0
  56. package/dist/bin/pushary-daemon.d.ts +1 -0
  57. package/dist/bin/pushary-daemon.js +878 -0
  58. package/dist/bin/pushary-disconnect.d.ts +1 -0
  59. package/dist/bin/pushary-disconnect.js +264 -0
  60. package/dist/bin/pushary-doctor.d.ts +1 -0
  61. package/dist/bin/pushary-doctor.js +1433 -0
  62. package/dist/bin/pushary-elicitation-hook.d.ts +1 -0
  63. package/dist/bin/pushary-elicitation-hook.js +149 -0
  64. package/dist/bin/pushary-gemini-bridge.d.ts +1 -0
  65. package/dist/bin/pushary-gemini-bridge.js +339 -0
  66. package/dist/bin/pushary-gemini-hook.d.ts +1 -0
  67. package/dist/bin/pushary-gemini-hook.js +381 -0
  68. package/dist/bin/pushary-hook.d.ts +1 -0
  69. package/dist/bin/pushary-hook.js +95 -0
  70. package/dist/bin/pushary-login.d.ts +1 -0
  71. package/dist/bin/pushary-login.js +198 -0
  72. package/dist/bin/pushary-logout.d.ts +1 -0
  73. package/dist/bin/pushary-logout.js +147 -0
  74. package/dist/bin/pushary-mcp.d.ts +1 -0
  75. package/dist/bin/pushary-mcp.js +114 -0
  76. package/dist/bin/pushary-mode.d.ts +1 -0
  77. package/dist/bin/pushary-mode.js +130 -0
  78. package/dist/bin/pushary-notification-hook.d.ts +1 -0
  79. package/dist/bin/pushary-notification-hook.js +56 -0
  80. package/dist/bin/pushary-opencode-hook.d.ts +1 -0
  81. package/dist/bin/pushary-opencode-hook.js +338 -0
  82. package/dist/bin/pushary-permission-denied-hook.d.ts +1 -0
  83. package/dist/bin/pushary-permission-denied-hook.js +60 -0
  84. package/dist/bin/pushary-permission-hook.d.ts +1 -0
  85. package/dist/bin/pushary-permission-hook.js +65 -0
  86. package/dist/bin/pushary-post-hook.d.ts +1 -0
  87. package/dist/bin/pushary-post-hook.js +70 -0
  88. package/dist/bin/pushary-prompt-hook.d.ts +1 -0
  89. package/dist/bin/pushary-prompt-hook.js +61 -0
  90. package/dist/bin/pushary-session-end-hook.d.ts +1 -0
  91. package/dist/bin/pushary-session-end-hook.js +59 -0
  92. package/dist/bin/pushary-session-start-hook.d.ts +1 -0
  93. package/dist/bin/pushary-session-start-hook.js +72 -0
  94. package/dist/bin/pushary-setup.d.ts +1 -0
  95. package/dist/bin/pushary-setup.js +2660 -0
  96. package/dist/bin/pushary-stats.d.ts +1 -0
  97. package/dist/bin/pushary-stats.js +44 -0
  98. package/dist/bin/pushary-status.d.ts +1 -0
  99. package/dist/bin/pushary-status.js +262 -0
  100. package/dist/bin/pushary-stop-hook.d.ts +1 -0
  101. package/dist/bin/pushary-stop-hook.js +63 -0
  102. package/dist/bin/pushary-stopfailure-hook.d.ts +1 -0
  103. package/dist/bin/pushary-stopfailure-hook.js +56 -0
  104. package/dist/bin/pushary-suggestions.d.ts +1 -0
  105. package/dist/bin/pushary-suggestions.js +100 -0
  106. package/dist/bin/pushary-transcript-register.d.ts +1 -0
  107. package/dist/bin/pushary-transcript-register.js +40 -0
  108. package/dist/bin/pushary-transcripts.d.ts +1 -0
  109. package/dist/bin/pushary-transcripts.js +77 -0
  110. package/dist/bin/pushary-upgrade.d.ts +1 -0
  111. package/dist/bin/pushary-upgrade.js +599 -0
  112. package/dist/bin/pushary-wait.d.ts +1 -0
  113. package/dist/bin/pushary-wait.js +122 -0
  114. package/dist/bin/pushary.d.ts +1 -0
  115. package/dist/bin/pushary.js +74 -0
  116. package/dist/chunk-2ABTSGFT.js +173 -0
  117. package/dist/chunk-2OY3ZZ5N.js +124 -0
  118. package/dist/chunk-3EGEA4KH.js +44 -0
  119. package/dist/chunk-3EVPNIBE.js +185 -0
  120. package/dist/chunk-5OP5MQI7.js +45 -0
  121. package/dist/chunk-6J2JC2RT.js +149 -0
  122. package/dist/chunk-7QLSKOSU.js +19 -0
  123. package/dist/chunk-7Z7Q4GGS.js +88 -0
  124. package/dist/chunk-A2A2YTMG.js +835 -0
  125. package/dist/chunk-AHV4LNB5.js +377 -0
  126. package/dist/chunk-AXPCESYO.js +197 -0
  127. package/dist/chunk-C2WCPBF7.js +86 -0
  128. package/dist/chunk-CJVVKOSR.js +73 -0
  129. package/dist/chunk-CULUZTWQ.js +2117 -0
  130. package/dist/chunk-CVQYGMSR.js +142 -0
  131. package/dist/chunk-CVWG2N3Y.js +16 -0
  132. package/dist/chunk-D2FX3EPW.js +15 -0
  133. package/dist/chunk-DB3ONZB4.js +44 -0
  134. package/dist/chunk-DE4Y6TCC.js +160 -0
  135. package/dist/chunk-E4FJTUH4.js +249 -0
  136. package/dist/chunk-EPCXUP3P.js +41 -0
  137. package/dist/chunk-EX3GAPA4.js +44 -0
  138. package/dist/chunk-EYK3GSRH.js +143 -0
  139. package/dist/chunk-GMXKITVA.js +70 -0
  140. package/dist/chunk-GPEGOGRJ.js +49 -0
  141. package/dist/chunk-GU3EJCVV.js +43 -0
  142. package/dist/chunk-HQ6G3B5R.js +59 -0
  143. package/dist/chunk-HZVVNGEW.js +22 -0
  144. package/dist/chunk-IPVKH2ST.js +231 -0
  145. package/dist/chunk-J5TIV3J6.js +238 -0
  146. package/dist/chunk-JU6W3XAU.js +64 -0
  147. package/dist/chunk-JYG4B33G.js +227 -0
  148. package/dist/chunk-JZTHGAPA.js +503 -0
  149. package/dist/chunk-KGDWDSNL.js +102 -0
  150. package/dist/chunk-KVQBWI5T.js +99 -0
  151. package/dist/chunk-KZERVKTD.js +16 -0
  152. package/dist/chunk-LXQ5FBBD.js +47 -0
  153. package/dist/chunk-M5ICYGHT.js +138 -0
  154. package/dist/chunk-M5JDZ45W.js +943 -0
  155. package/dist/chunk-MDEPU45E.js +1226 -0
  156. package/dist/chunk-MPWXGONV.js +157 -0
  157. package/dist/chunk-N6IOSZOE.js +185 -0
  158. package/dist/chunk-NGDD6TXY.js +192 -0
  159. package/dist/chunk-NQTHFF4W.js +2830 -0
  160. package/dist/chunk-OKXS7WDZ.js +68 -0
  161. package/dist/chunk-OLQRRFBX.js +21 -0
  162. package/dist/chunk-P7WQEVWA.js +307 -0
  163. package/dist/chunk-POFBE6ZY.js +12 -0
  164. package/dist/chunk-PQ4K74WL.js +30 -0
  165. package/dist/chunk-PUZZELE6.js +37 -0
  166. package/dist/chunk-Q7E4I6UA.js +767 -0
  167. package/dist/chunk-QCGNGEGE.js +15 -0
  168. package/dist/chunk-R7437YI3.js +151 -0
  169. package/dist/chunk-RHR6NARM.js +305 -0
  170. package/dist/chunk-SAXBC4AZ.js +60 -0
  171. package/dist/chunk-SGZJ5LYH.js +76 -0
  172. package/dist/chunk-SIFVFP6T.js +70 -0
  173. package/dist/chunk-SLFABHW3.js +150 -0
  174. package/dist/chunk-T7E75EKA.js +67 -0
  175. package/dist/chunk-TY4JT7W3.js +38 -0
  176. package/dist/chunk-U4TMAANR.js +111 -0
  177. package/dist/chunk-UI36QSBI.js +177 -0
  178. package/dist/chunk-VQKRG3AC.js +339 -0
  179. package/dist/chunk-WE2J62NC.js +1131 -0
  180. package/dist/chunk-XHKBHWLX.js +14 -0
  181. package/dist/chunk-ZSZSSJCV.js +275 -0
  182. package/dist/chunk-ZVSKMPBZ.js +135 -0
  183. package/dist/reapply-CW3MA66V.js +34 -0
  184. package/dist/src/index.d.ts +204 -0
  185. package/dist/src/index.js +64 -0
  186. package/package.json +108 -0
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ handleBell
4
+ } from "../chunk-IPVKH2ST.js";
5
+ import {
6
+ readHookInput
7
+ } from "../chunk-KGDWDSNL.js";
8
+ import "../chunk-JZTHGAPA.js";
9
+ import "../chunk-SGZJ5LYH.js";
10
+ import "../chunk-EYK3GSRH.js";
11
+ import "../chunk-ZVSKMPBZ.js";
12
+ import "../chunk-C2WCPBF7.js";
13
+ import "../chunk-6J2JC2RT.js";
14
+ import "../chunk-WE2J62NC.js";
15
+ import "../chunk-3EVPNIBE.js";
16
+ import "../chunk-OKXS7WDZ.js";
17
+ import "../chunk-MPWXGONV.js";
18
+ import "../chunk-SAXBC4AZ.js";
19
+ import "../chunk-OLQRRFBX.js";
20
+ import "../chunk-XHKBHWLX.js";
21
+ import "../chunk-EPCXUP3P.js";
22
+ import "../chunk-CVQYGMSR.js";
23
+ import "../chunk-POFBE6ZY.js";
24
+ import "../chunk-GMXKITVA.js";
25
+ import "../chunk-P7WQEVWA.js";
26
+ import "../chunk-2OY3ZZ5N.js";
27
+ import "../chunk-LXQ5FBBD.js";
28
+ import "../chunk-7QLSKOSU.js";
29
+ import "../chunk-KZERVKTD.js";
30
+ import "../chunk-DB3ONZB4.js";
31
+ import "../chunk-A2A2YTMG.js";
32
+ import "../chunk-T7E75EKA.js";
33
+ import "../chunk-GPEGOGRJ.js";
34
+ import "../chunk-E4FJTUH4.js";
35
+ import "../chunk-NQTHFF4W.js";
36
+
37
+ // bin/pushary-bell-hook.ts
38
+ var main = async () => {
39
+ try {
40
+ const input = await readHookInput("claude");
41
+ if (input) handleBell(input);
42
+ } catch {
43
+ }
44
+ process.stdout.write("{}");
45
+ };
46
+ main();
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1,146 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ DEFAULT_UPGRADE_THRESHOLD,
4
+ handleBell,
5
+ liveAgentCount,
6
+ ring,
7
+ upgradeThreshold
8
+ } from "../chunk-IPVKH2ST.js";
9
+ import {
10
+ addBellHooks,
11
+ bellInstalled,
12
+ removeBellHooks
13
+ } from "../chunk-OKXS7WDZ.js";
14
+ import {
15
+ createIo
16
+ } from "../chunk-U4TMAANR.js";
17
+ import {
18
+ exitOnHelpFlag
19
+ } from "../chunk-HZVVNGEW.js";
20
+ import {
21
+ parseFlags
22
+ } from "../chunk-GMXKITVA.js";
23
+ import "../chunk-P7WQEVWA.js";
24
+ import "../chunk-7QLSKOSU.js";
25
+ import {
26
+ EXIT
27
+ } from "../chunk-KZERVKTD.js";
28
+ import "../chunk-DB3ONZB4.js";
29
+ import {
30
+ claudeSettings
31
+ } from "../chunk-A2A2YTMG.js";
32
+ import {
33
+ readJsonSafe,
34
+ writeJsonAtomic
35
+ } from "../chunk-T7E75EKA.js";
36
+ import "../chunk-GPEGOGRJ.js";
37
+ import "../chunk-E4FJTUH4.js";
38
+ import "../chunk-NQTHFF4W.js";
39
+
40
+ // bin/pushary-bell.ts
41
+ exitOnHelpFlag("bell");
42
+ var { bold, cyan, dim, green, yellow } = createIo();
43
+ var readStdin = async () => {
44
+ const chunks = [];
45
+ for await (const chunk of process.stdin) chunks.push(Buffer.from(chunk));
46
+ return Buffer.concat(chunks).toString("utf-8");
47
+ };
48
+ var settingsPath = () => claudeSettings();
49
+ var loadSettings = (path) => {
50
+ const existing = readJsonSafe(path);
51
+ if (existing.kind === "ok") return existing.value;
52
+ if (existing.kind === "unreadable" || existing.kind === "unparseable") {
53
+ throw new Error(`${path} exists but could not be read. Fix or move it, then re-run. Nothing was changed.`);
54
+ }
55
+ return {};
56
+ };
57
+ var install = () => {
58
+ const path = settingsPath();
59
+ const settings = loadSettings(path);
60
+ const already = bellInstalled(settings);
61
+ addBellHooks(settings);
62
+ writeJsonAtomic(path, settings);
63
+ console.log();
64
+ console.log(` ${green("\u2713")} ${bold(already ? "Bell updated." : "Bell on.")}`);
65
+ console.log(` ${dim(`Claude Code will ring this terminal when an agent finishes or needs you (${path}).`)}`);
66
+ console.log();
67
+ console.log(` ${dim("It makes a local noise. That is all it does.")}`);
68
+ console.log(` ${dim("No account, no API key, no network call, nothing leaves this machine.")}`);
69
+ console.log();
70
+ console.log(` ${dim("Try it:")} ${cyan("pushary bell --test")}`);
71
+ console.log(` ${dim("Turn it off:")} ${cyan("pushary bell --off")}`);
72
+ console.log();
73
+ };
74
+ var uninstall = () => {
75
+ const path = settingsPath();
76
+ const settings = loadSettings(path);
77
+ const removed = removeBellHooks(settings);
78
+ if (removed) writeJsonAtomic(path, settings);
79
+ console.log();
80
+ console.log(` ${green("\u2713")} ${removed ? "Bell off." : "The bell was not installed."}`);
81
+ if (removed) console.log(` ${dim(`Removed from ${path}. Nothing else was touched.`)}`);
82
+ console.log();
83
+ };
84
+ var test = () => {
85
+ const result = ring({ title: "Pushary bell", body: "This is what it sounds like." });
86
+ console.log();
87
+ console.log(` ${result.rang ? green("\u2713") : yellow("!")} Terminal bell ${result.rang ? "sent" : "could not be written"}`);
88
+ console.log(
89
+ ` ${result.notified ? green("\u2713") : dim("\u2013")} Desktop notification ${result.notified ? "sent" : "not available on this platform"}`
90
+ );
91
+ if (!result.rang) {
92
+ console.log();
93
+ console.log(` ${dim("Some terminals mute the bell by default. In iTerm2 it is")} ${cyan("Settings > Profiles > Terminal > Silence bell")}${dim(".")}`);
94
+ }
95
+ console.log();
96
+ };
97
+ var status = () => {
98
+ const path = settingsPath();
99
+ let installed = false;
100
+ try {
101
+ installed = bellInstalled(loadSettings(path));
102
+ } catch {
103
+ installed = false;
104
+ }
105
+ const live = liveAgentCount();
106
+ const threshold = upgradeThreshold();
107
+ console.log();
108
+ console.log(` ${installed ? green("\u2713") : dim("\u2013")} Bell ${installed ? "on" : "off"} ${dim(`(${path})`)}`);
109
+ console.log(` ${dim(`${live} agent${live === 1 ? "" : "s"} seen in the last 10 minutes`)}`);
110
+ if (!installed) console.log(` ${dim("Turn it on:")} ${cyan("pushary bell")}`);
111
+ console.log();
112
+ console.log(
113
+ ` ${dim(
114
+ `Above ${threshold} concurrent agents the bell says so, once a day. A bell cannot tell you which agent is asking.`
115
+ )}`
116
+ );
117
+ if (threshold !== DEFAULT_UPGRADE_THRESHOLD) {
118
+ console.log(` ${dim(`Threshold overridden by PUSHARY_BELL_UPGRADE_AT (default ${DEFAULT_UPGRADE_THRESHOLD}).`)}`);
119
+ }
120
+ console.log();
121
+ };
122
+ var runHook = async () => {
123
+ try {
124
+ const raw = await readStdin();
125
+ const input = raw.trim() ? JSON.parse(raw) : {};
126
+ handleBell(input);
127
+ } catch {
128
+ }
129
+ process.stdout.write("{}");
130
+ process.exit(EXIT.OK);
131
+ };
132
+ var main = async () => {
133
+ const argv = process.argv.slice(2);
134
+ const flags = parseFlags(argv, { bools: ["off", "test", "status", "hook", "help", "h"], values: [] });
135
+ if (flags.bools.has("hook")) return runHook();
136
+ if (flags.bools.has("test")) return test();
137
+ if (flags.bools.has("status")) return status();
138
+ if (flags.bools.has("off")) return uninstall();
139
+ return install();
140
+ };
141
+ await main().catch((err) => {
142
+ console.log();
143
+ console.log(` ${yellow("!")} ${err instanceof Error ? err.message : "Something went wrong."}`);
144
+ console.log();
145
+ process.exit(EXIT.FAILED);
146
+ });
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node