pushary 1.9.106 → 1.9.108
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.
- package/CHANGELOG.md +8 -0
- package/data/cursor-plugin/README.md +9 -0
- package/dist/bin/pushary-daemon.js +1 -1
- package/dist/bin/pushary-hook.js +2 -2
- package/dist/bin/pushary-login.js +1 -1
- package/dist/bin/pushary-permission-denied-hook.js +2 -2
- package/dist/bin/pushary-permission-hook.js +2 -2
- package/dist/bin/pushary-setup.js +5 -1
- package/dist/bin/pushary-transcripts.js +1 -1
- package/dist/bin/pushary-upgrade.js +1 -1
- package/dist/{chunk-MLLL2ET6.js → chunk-2BILLNZ4.js} +1 -1
- package/dist/{chunk-4OUPD4KA.js → chunk-7X55ZQS3.js} +5 -0
- package/dist/{chunk-WUIWHGKF.js → chunk-LIPMEFRA.js} +1 -1
- package/dist/src/index.js +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.108
|
|
4
|
+
|
|
5
|
+
- After a successful `pushary setup` on the Agent or Agent Pro plan, setup prints one more line after the "Useful" list: "On a team? Send risky steps to a lead and see who approved: pushary.com/teams". It is not shown on Team, Partner, Enterprise or e-commerce plans, when setup could not check the plan, or when setup did not succeed. Nothing else in the CLI or the hooks changed.
|
|
6
|
+
|
|
7
|
+
## 1.9.107
|
|
8
|
+
|
|
9
|
+
- On Windows, the hook now reads Claude Code's managed settings from `C:\Program Files\ClaudeCode\managed-settings.json`, where Claude Code reads them. It read `C:\ProgramData\ClaudeCode\managed-settings.json`, which Claude Code no longer reads, so an organization's managed allow, ask and deny rules were missing when Pushary checked whether Claude Code's own rules already cover a tool call, and from the hook wiring report. macOS and Linux are unchanged. Nothing else in the CLI or the hooks changed.
|
|
10
|
+
|
|
3
11
|
## 1.9.106
|
|
4
12
|
|
|
5
13
|
- The test approval at the end of `pushary setup`, and the one `pushary doctor` sends, now wait the full 55 seconds for your tap. Since the server began ending each wait after at most 48 seconds, so that agents' tool calls stay inside their hosts' time limits, the check made one wait, read the early "still pending" as nobody answering, and cancelled the question on your phone. A tap between 48 and 55 seconds was reported as "nothing came back". The check now keeps waiting while the question is pending, up to its own 55 second window, and still cancels the question if nobody answers in time. Pressing Ctrl-C while it waits stops the waiting at once. The bundled Pushary skill now says one call waits at most 48 seconds. Nothing else in the CLI or the hooks changed.
|
|
@@ -83,6 +83,15 @@ The hooks register the supported execution boundaries; your dashboard policy dec
|
|
|
83
83
|
|
|
84
84
|
Timeout approvals apply only after the configured wait actually elapsed. Short editor hook budgets can end a wait earlier; cancellation is attempted before handoff. An uncertain cancellation denies the action. Local plugin installation does not install hooks into remote or cloud agent environments.
|
|
85
85
|
|
|
86
|
+
## For teams
|
|
87
|
+
|
|
88
|
+
On [Pushary for Teams](https://pushary.com/teams?utm_source=github&utm_medium=oss-adapter&utm_campaign=cursor-plugin&utm_content=readme-teams), each person installs the plugin and connects their own Cursor. Their agent's questions go to them. An owner or admin can send a chosen step to someone else with a routing rule in **Policies**, under **Approval routing**, such as `Bash(git push:*)` in the `infra` repository, routed to the Admins role. Cursor's shell commands match `Bash(...)` rules, so the same rule also covers teammates on Claude Code, Codex or Gemini CLI. Whoever answers in the phone app, Mac app or dashboard is recorded by name.
|
|
89
|
+
|
|
90
|
+
- Cursor gives a hook about 60 seconds, so a lead has to answer within that. If nobody does, the step goes back to Cursor, and a yes given there isn't recorded.
|
|
91
|
+
- The phone can only deny risky steps such as a force push or `rm -r`. Approve those in the dashboard.
|
|
92
|
+
|
|
93
|
+
Team is $59 a month for 5 people, plus $12 for each extra person.
|
|
94
|
+
|
|
86
95
|
## Commands
|
|
87
96
|
|
|
88
97
|
- `/pushary-test` sends a test push so you can confirm delivery.
|
package/dist/bin/pushary-hook.js
CHANGED
|
@@ -34,8 +34,9 @@ import {
|
|
|
34
34
|
describeClosing,
|
|
35
35
|
phoneStartServiceState,
|
|
36
36
|
renderCommandSurface,
|
|
37
|
+
teamOfferLines,
|
|
37
38
|
unverifiedKeyClosingReason
|
|
38
|
-
} from "../chunk-
|
|
39
|
+
} from "../chunk-7X55ZQS3.js";
|
|
39
40
|
import {
|
|
40
41
|
coworkOutput,
|
|
41
42
|
coworkSelection
|
|
@@ -2865,6 +2866,9 @@ var main = async () => {
|
|
|
2865
2866
|
console.log();
|
|
2866
2867
|
console.log(` ${dim("Useful:")}`);
|
|
2867
2868
|
for (const line of renderCommandSurface(keyScope)) console.log(` ${dim(line)}`);
|
|
2869
|
+
const teamOffer = teamOfferLines(closing.ok, keyCheck?.kind === "ok" ? keyCheck.identity.plan : null);
|
|
2870
|
+
if (teamOffer.length > 0) console.log();
|
|
2871
|
+
for (const line of teamOffer) console.log(` ${line}`);
|
|
2868
2872
|
console.log();
|
|
2869
2873
|
const exitCode = closing.exitCode;
|
|
2870
2874
|
await reportSetupOutcome({
|
|
@@ -26,6 +26,10 @@ var sendAnotherTestLines = (appPlatforms) => {
|
|
|
26
26
|
var TRANSCRIPT_SYNC_NOTICE = `Transcripts sync redacted and encrypted. Your phone can decrypt them; authorized Pushary compliance admins can recover them for documented legal obligations. Turn off: ${NPX_LATEST_COMMAND} transcripts off`;
|
|
27
27
|
var PAIR_PHONE_APP_HINT = `${NPX_LATEST_COMMAND} setup --connect app pair the Pushary app on your phone`;
|
|
28
28
|
var RESTART_AGENTS_LINE = "Restart any open agent sessions so they pick up Pushary.";
|
|
29
|
+
var TEAM_OFFER_LINE = "On a team? Send risky steps to a lead and see who approved: pushary.com/teams";
|
|
30
|
+
var PLANS_THAT_CAN_MOVE_UP_TO_TEAM = ["agent", "agent_pro"];
|
|
31
|
+
var canMoveUpToTeam = (plan) => PLANS_THAT_CAN_MOVE_UP_TO_TEAM.some((candidate) => candidate === plan);
|
|
32
|
+
var teamOfferLines = (setupSucceeded, plan) => setupSucceeded && canMoveUpToTeam(plan) ? [TEAM_OFFER_LINE] : [];
|
|
29
33
|
var ANSWERING_DEVICES = {
|
|
30
34
|
mobile_app: "Your phone",
|
|
31
35
|
mobile_background: "Your phone",
|
|
@@ -267,6 +271,7 @@ var unverifiedKeyClosingReason = (facts) => {
|
|
|
267
271
|
|
|
268
272
|
export {
|
|
269
273
|
TRANSCRIPT_SYNC_NOTICE,
|
|
274
|
+
teamOfferLines,
|
|
270
275
|
renderCommandSurface,
|
|
271
276
|
phoneStartFellShortLine,
|
|
272
277
|
phoneStartServiceState,
|
|
@@ -12,7 +12,7 @@ import { join } from "path";
|
|
|
12
12
|
var MANAGED_CLAUDE_SETTINGS_BY_PLATFORM = {
|
|
13
13
|
darwin: "/Library/Application Support/ClaudeCode/managed-settings.json",
|
|
14
14
|
linux: "/etc/claude-code/managed-settings.json",
|
|
15
|
-
win32: "C:\\
|
|
15
|
+
win32: "C:\\Program Files\\ClaudeCode\\managed-settings.json"
|
|
16
16
|
};
|
|
17
17
|
var MAX_CLAUDE_SETTINGS_BYTES = 1048576;
|
|
18
18
|
var claudeSettingsLocationFor = (cwd, environment = process.env, home = homedir(), platform = process.platform) => ({
|
package/dist/src/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pushary",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.108",
|
|
4
4
|
"description": "Human-in-the-loop (HITL) for AI agents: ask a person for approvals or answers by push notification. One command connects Claude Code, Codex, Cursor, Gemini CLI and more.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pushary",
|