pushary 1.9.123 → 1.9.124

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 CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.124
4
+
5
+ - Cursor: the Pushary gate runs on Windows and from a plugin folder whose path has a space or a symlink. Before, it printed nothing there, so Cursor blocked every shell command, MCP call and file edit it gates. The Cursor Marketplace plugin updates through Cursor; run `npx pushary@latest setup --agents cursor` to update a copy that setup installed.
6
+
3
7
  ## 1.9.123
4
8
 
5
9
  - The background daemon keeps running after your computer wakes from sleep. Before, a transcript hook that ran in the first 30 seconds after a long sleep could stop it, and phone start, transcript upload and the Claude wake inbox stayed off until a later hook started it again.
@@ -2,7 +2,7 @@
2
2
  "name": "pushary",
3
3
  "displayName": "Pushary — Control Panel for AI Agents",
4
4
  "description": "Push notifications, human-in-the-loop questions, and permission gating for your AI coding agent. Get a push when a task finishes, answer the agent from your phone, and approve risky commands before they run.",
5
- "version": "0.2.10",
5
+ "version": "0.2.11",
6
6
  "minClientVersions": {
7
7
  "grokbot": "never",
8
8
  "sand": "never"
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.11
4
+
5
+ - The gate runs on Windows and from a plugin folder whose path has a space or a symlink. Before, it printed nothing there, so Cursor blocked every shell command, MCP call and file edit the gate covers.
6
+
3
7
  ## 0.2.10
4
8
 
5
9
  - The bundled Pushary skill is 0.13.1. It gives the next step for each `status --json` exit code, lists every agent id setup accepts, and keeps the Mac app in charge of the agents it connected.
@@ -6,9 +6,9 @@ import { redactSecrets, redactSecretsDeep } from './redaction.mjs'
6
6
  export { redactSecrets } from './redaction.mjs'
7
7
  import { createHash, randomUUID } from 'node:crypto'
8
8
  import { homedir, hostname } from 'node:os'
9
- import { existsSync, readFileSync } from 'node:fs'
9
+ import { existsSync, readFileSync, realpathSync } from 'node:fs'
10
10
  import { basename, dirname, isAbsolute, join, posix, resolve } from 'node:path'
11
- import { fileURLToPath } from 'node:url'
11
+ import { fileURLToPath, pathToFileURL } from 'node:url'
12
12
 
13
13
  const BASE_URL = process.env.PUSHARY_BASE_URL?.trim() || 'https://pushary.com'
14
14
  const MCP_URL = `${BASE_URL}/api/mcp/mcp`
@@ -758,10 +758,18 @@ setTimeout(async () => {
758
758
  // executed directly, so importing this file for a test does not read stdin.
759
759
  export { normalizeRepoRemote, deriveRepoKey, repositoryScopeFor, describeRequest, handlePushOnly, handlePushFirst, withdraw, approvalModeWithoutLocalPrompt, timeoutActionWithoutLocalPrompt }
760
760
 
761
- const isDirectRun = process.argv[1] && import.meta.url === `file://${process.argv[1]}`
762
- if (!isDirectRun) {
763
- // imported for tests
764
- } else main().catch((error) => {
761
+ const isThisFile = (path) => pathToFileURL(path).href === import.meta.url
762
+
763
+ const ranAsTheScript = (scriptPath) => {
764
+ if (!scriptPath) return false
765
+ try {
766
+ return isThisFile(scriptPath) || isThisFile(realpathSync(scriptPath))
767
+ } catch {
768
+ return false
769
+ }
770
+ }
771
+
772
+ if (ranAsTheScript(process.argv[1])) main().catch((error) => {
765
773
  process.stderr.write(`[pushary-gate] fatal: ${error?.message ?? error}\n`)
766
774
  respond(ask())
767
775
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pushary",
3
- "version": "1.9.123",
3
+ "version": "1.9.124",
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",