pushary 1.8.0 → 1.8.1

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 (104) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +27 -19
  3. package/data/SKILL.md +8 -8
  4. package/data/cowork/SKILL.md +2 -2
  5. package/data/cursor-plugin/README.md +2 -2
  6. package/data/cursor-plugin/scripts/redaction.mjs +4 -2
  7. package/data/cursor-plugin/skills/pushary/SKILL.md +7 -7
  8. package/data/vscode-plugin/README.md +4 -4
  9. package/data/vscode-plugin/scripts/pushary-gate.mjs +2 -2
  10. package/data/vscode-plugin/scripts/redaction.mjs +4 -2
  11. package/data/vscode-plugin/skills/pushary/SKILL.md +7 -7
  12. package/dist/bin/pushary-bell-hook.js +23 -23
  13. package/dist/bin/pushary-bell.js +9 -9
  14. package/dist/bin/pushary-claude.js +26 -26
  15. package/dist/bin/pushary-clean.js +34 -32
  16. package/dist/bin/pushary-codex-bridge.js +18 -18
  17. package/dist/bin/pushary-codex-hook.js +31 -31
  18. package/dist/bin/pushary-codex.js +13 -13
  19. package/dist/bin/pushary-connect.js +13 -13
  20. package/dist/bin/pushary-cowork.js +5 -5
  21. package/dist/bin/pushary-daemon.js +27 -27
  22. package/dist/bin/pushary-disconnect.js +18 -18
  23. package/dist/bin/pushary-doctor.js +37 -37
  24. package/dist/bin/pushary-elicitation-hook.js +25 -25
  25. package/dist/bin/pushary-gemini-bridge.js +12 -12
  26. package/dist/bin/pushary-gemini-hook.js +28 -28
  27. package/dist/bin/pushary-hook.js +32 -32
  28. package/dist/bin/pushary-login.js +12 -12
  29. package/dist/bin/pushary-logout.js +7 -7
  30. package/dist/bin/pushary-mcp.js +9 -9
  31. package/dist/bin/pushary-mode.js +9 -9
  32. package/dist/bin/pushary-notification-hook.js +28 -28
  33. package/dist/bin/pushary-opencode-hook.js +27 -27
  34. package/dist/bin/pushary-permission-denied-hook.js +32 -32
  35. package/dist/bin/pushary-permission-hook.js +31 -31
  36. package/dist/bin/pushary-post-hook.js +28 -28
  37. package/dist/bin/pushary-prompt-hook.js +28 -28
  38. package/dist/bin/pushary-session-end-hook.js +28 -28
  39. package/dist/bin/pushary-session-start-hook.js +32 -32
  40. package/dist/bin/pushary-setup.js +39 -39
  41. package/dist/bin/pushary-stats.js +5 -5
  42. package/dist/bin/pushary-status.js +15 -15
  43. package/dist/bin/pushary-stop-hook.js +28 -28
  44. package/dist/bin/pushary-stopfailure-hook.js +28 -28
  45. package/dist/bin/pushary-suggestions.js +4 -4
  46. package/dist/bin/pushary-transcript-register.js +19 -19
  47. package/dist/bin/pushary-transcripts.js +7 -7
  48. package/dist/bin/pushary-upgrade.js +26 -26
  49. package/dist/bin/pushary-wait.js +9 -9
  50. package/dist/bin/pushary.js +6 -6
  51. package/dist/{chunk-2OY3ZZ5N.js → chunk-2SLCHCVN.js} +3 -3
  52. package/dist/{chunk-E4FJTUH4.js → chunk-35X5UDML.js} +7 -7
  53. package/dist/{chunk-LXQ5FBBD.js → chunk-4A3UQERT.js} +1 -1
  54. package/dist/{chunk-CJVVKOSR.js → chunk-5DGNEUXK.js} +2 -2
  55. package/dist/{chunk-DB3ONZB4.js → chunk-5Y2DY6X4.js} +2 -2
  56. package/dist/{chunk-NQTHFF4W.js → chunk-5YY3IJT4.js} +21 -19
  57. package/dist/{chunk-UI36QSBI.js → chunk-64H5IZZD.js} +2 -2
  58. package/dist/{chunk-JZTHGAPA.js → chunk-6TK4IY3A.js} +8 -8
  59. package/dist/{chunk-OLQRRFBX.js → chunk-72WOCX22.js} +1 -1
  60. package/dist/{chunk-JU6W3XAU.js → chunk-7ITOAMCD.js} +1 -1
  61. package/dist/{chunk-JYG4B33G.js → chunk-7U7ZWUTR.js} +1 -1
  62. package/dist/{chunk-SIFVFP6T.js → chunk-ASWRMBOM.js} +1 -1
  63. package/dist/{chunk-HZVVNGEW.js → chunk-CB23AO4D.js} +2 -2
  64. package/dist/{chunk-D2FX3EPW.js → chunk-CHMOVJ2M.js} +1 -1
  65. package/dist/{chunk-ZVSKMPBZ.js → chunk-DLEKCAQL.js} +1 -1
  66. package/dist/{chunk-2ABTSGFT.js → chunk-DVW2MYCM.js} +3 -3
  67. package/dist/{chunk-TY4JT7W3.js → chunk-DXBS2EL7.js} +1 -1
  68. package/dist/{chunk-WE2J62NC.js → chunk-EIGJYCOE.js} +5 -5
  69. package/dist/{chunk-CULUZTWQ.js → chunk-F6NTWZZC.js} +9 -9
  70. package/dist/{chunk-KGDWDSNL.js → chunk-FLQPM2GQ.js} +2 -2
  71. package/dist/{chunk-EYK3GSRH.js → chunk-GBNQXYN4.js} +4 -4
  72. package/dist/{chunk-VQKRG3AC.js → chunk-GH6KGWMC.js} +6 -6
  73. package/dist/{chunk-KVQBWI5T.js → chunk-HBWC3JVZ.js} +2 -2
  74. package/dist/{chunk-IPVKH2ST.js → chunk-HMNR7B2F.js} +1 -1
  75. package/dist/{chunk-OKXS7WDZ.js → chunk-HOEB6AKG.js} +1 -1
  76. package/dist/{chunk-Q7E4I6UA.js → chunk-HQRCVEI2.js} +13 -10
  77. package/dist/{chunk-3EVPNIBE.js → chunk-HTEGMMT3.js} +3 -3
  78. package/dist/{chunk-R7437YI3.js → chunk-HVDMGDYV.js} +2 -2
  79. package/dist/{chunk-M5ICYGHT.js → chunk-I4HKMUZQ.js} +3 -3
  80. package/dist/{chunk-M5JDZ45W.js → chunk-INSMZNS7.js} +5 -5
  81. package/dist/{chunk-AXPCESYO.js → chunk-JRQRNNGA.js} +3 -3
  82. package/dist/{chunk-CVQYGMSR.js → chunk-KB2FTO4O.js} +4 -4
  83. package/dist/{chunk-MDEPU45E.js → chunk-LK2S5XIV.js} +6 -6
  84. package/dist/{chunk-NGDD6TXY.js → chunk-MMVCI6DT.js} +5 -5
  85. package/dist/{chunk-C2WCPBF7.js → chunk-MYHG7PX2.js} +1 -1
  86. package/dist/{chunk-7Z7Q4GGS.js → chunk-N6JJJTPH.js} +6 -3
  87. package/dist/{chunk-EX3GAPA4.js → chunk-NHCUXTEM.js} +1 -1
  88. package/dist/{chunk-AHV4LNB5.js → chunk-NOLPURUI.js} +1 -1
  89. package/dist/{chunk-6J2JC2RT.js → chunk-OCVVSRDA.js} +3 -3
  90. package/dist/{chunk-GPEGOGRJ.js → chunk-ON5JW2HP.js} +1 -1
  91. package/dist/{chunk-J5TIV3J6.js → chunk-QB6QYZ6B.js} +5 -5
  92. package/dist/{chunk-SLFABHW3.js → chunk-T55H6YEP.js} +2 -2
  93. package/dist/{chunk-P7WQEVWA.js → chunk-TJMAXQ5Q.js} +2 -2
  94. package/dist/{chunk-DE4Y6TCC.js → chunk-TKQ6LZQZ.js} +6 -6
  95. package/dist/{chunk-SAXBC4AZ.js → chunk-UMMCHS6P.js} +1 -1
  96. package/dist/{chunk-A2A2YTMG.js → chunk-UPLV5AJF.js} +1 -1
  97. package/dist/{chunk-MPWXGONV.js → chunk-URNXU3FO.js} +1 -1
  98. package/dist/{chunk-EPCXUP3P.js → chunk-VFFHQC7W.js} +1 -1
  99. package/dist/{chunk-HQ6G3B5R.js → chunk-VZMIHERK.js} +2 -2
  100. package/dist/{chunk-RHR6NARM.js → chunk-W2LJ4O3A.js} +2 -2
  101. package/dist/{chunk-ZSZSSJCV.js → chunk-ZJYJAD52.js} +1 -1
  102. package/dist/{reapply-CW3MA66V.js → reapply-ICGTBHVE.js} +9 -9
  103. package/dist/src/index.js +20 -20
  104. package/package.json +1 -1
@@ -22,7 +22,7 @@ var COWORK_STANDING_INSTRUCTIONS = `Pushary is connected as a custom connector.
22
22
  - If Pushary tools are missing or disabled, report that once and continue within my authorization. Do not claim a notification or approval was delivered.`;
23
23
 
24
24
  // ../contracts/src/agent-manifest.ts
25
- var AGENT_HOOKS_SETUP_COMMAND = "npx @pushary/agent-hooks@latest setup";
25
+ var PUSHARY_SETUP_COMMAND = "npx pushary@latest setup";
26
26
  var defaults = {
27
27
  hasStoredIdentity: true,
28
28
  hookSource: null,
@@ -54,7 +54,7 @@ var AGENTS = {
54
54
  managedProvider: true,
55
55
  enforcement: "enforced",
56
56
  connectVia: "Native hooks + MCP",
57
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
57
+ setupCommand: PUSHARY_SETUP_COMMAND,
58
58
  enforcementDetail: "Shell, writes and edits, subject to Claude Code permission mode and explicit policy."
59
59
  },
60
60
  claude_chat: {
@@ -81,7 +81,7 @@ var AGENTS = {
81
81
  managedProvider: true,
82
82
  enforcement: "enforced",
83
83
  connectVia: "Native hooks + MCP",
84
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
84
+ setupCommand: PUSHARY_SETUP_COMMAND,
85
85
  enforcementDetail: "Shell and apply_patch edits through native permission hooks; requires a compatible Codex runtime."
86
86
  },
87
87
  chatgpt: {
@@ -101,7 +101,7 @@ var AGENTS = {
101
101
  managedProvider: true,
102
102
  enforcement: "enforced",
103
103
  connectVia: "Native hooks + MCP",
104
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
104
+ setupCommand: PUSHARY_SETUP_COMMAND,
105
105
  enforcementDetail: "Shell, writes and edits through native BeforeTool hooks."
106
106
  },
107
107
  hermes: {
@@ -110,7 +110,7 @@ var AGENTS = {
110
110
  policyAgent: "hermes",
111
111
  enforcement: "enforced",
112
112
  connectVia: "Native Python plugin + approval transport",
113
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
113
+ setupCommand: PUSHARY_SETUP_COMMAND,
114
114
  enforcementDetail: "Hermes dangerous-command approvals when the Pushary transport is selected; optional PUSHARY_GATE_TOOLS gates named tools.",
115
115
  capabilityNote: "Uses the Python plugin, not a macOS bridge HookSource. CLI disconnect and managed-provider controls are not implemented for Hermes."
116
116
  },
@@ -123,7 +123,7 @@ var AGENTS = {
123
123
  disconnectable: true,
124
124
  enforcement: "enforced",
125
125
  connectVia: "Editor plugin hooks + MCP",
126
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
126
+ setupCommand: PUSHARY_SETUP_COMMAND,
127
127
  enforcementDetail: "With installed hooks: shell, MCP execution and Write/Delete/Edit tool calls. Plain MCP remains cooperative."
128
128
  },
129
129
  vscode: {
@@ -134,7 +134,7 @@ var AGENTS = {
134
134
  policyAgent: "vscode",
135
135
  enforcement: "enforced",
136
136
  connectVia: "Agent plugin hooks + MCP",
137
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
137
+ setupCommand: PUSHARY_SETUP_COMMAND,
138
138
  enforcementDetail: "PreToolUse approval hooks from the installed agent plugin; the host decides which events it exposes.",
139
139
  capabilityNote: "Has both a bridge HookSource and a per-agent policy profile. CLI disconnect and managed-provider controls are not implemented for VS Code."
140
140
  },
@@ -148,14 +148,14 @@ var AGENTS = {
148
148
  disconnectable: true,
149
149
  enforcement: "enforced",
150
150
  connectVia: "Generated plugin + MCP",
151
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
151
+ setupCommand: PUSHARY_SETUP_COMMAND,
152
152
  enforcementDetail: "Shell, writes, edits and web fetches when OpenCode itself asks for permission."
153
153
  },
154
154
  fx: {
155
155
  ...defaults,
156
156
  label: "fx",
157
157
  connectVia: "Local MCP bridge",
158
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
158
+ setupCommand: PUSHARY_SETUP_COMMAND,
159
159
  capabilityNote: "fx has no hooks that other tools can register, so Pushary cannot answer fx's own approval prompts. Setup turns off fx's terminal question tool so fx's agent asks through Pushary. fx's full-access mode ignores that setting; there the agent is only instructed to ask through Pushary."
160
160
  },
161
161
  qwen_code: {
@@ -168,7 +168,7 @@ var AGENTS = {
168
168
  disconnectable: true,
169
169
  enforcement: "enforced",
170
170
  connectVia: "Native hooks + MCP",
171
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
171
+ setupCommand: PUSHARY_SETUP_COMMAND,
172
172
  enforcementDetail: "Shell, writes and edits through native PreToolUse hooks, matched on Qwen's own tool names and their Claude-shaped aliases."
173
173
  },
174
174
  codebuddy: {
@@ -181,7 +181,7 @@ var AGENTS = {
181
181
  disconnectable: true,
182
182
  enforcement: "enforced",
183
183
  connectVia: "Native hooks + MCP",
184
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
184
+ setupCommand: PUSHARY_SETUP_COMMAND,
185
185
  enforcementDetail: "Shell, writes and edits through native PreToolUse hooks, plus PermissionRequest. CodeBuddy implements the Claude Code hook specification."
186
186
  },
187
187
  qoder: {
@@ -194,7 +194,7 @@ var AGENTS = {
194
194
  disconnectable: true,
195
195
  enforcement: "enforced",
196
196
  connectVia: "Native hooks + MCP",
197
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
197
+ setupCommand: PUSHARY_SETUP_COMMAND,
198
198
  enforcementDetail: "Shell, writes and edits through native PreToolUse hooks, plus PermissionRequest, over Qoder's superset of the Claude Code event list.",
199
199
  capabilityNote: "Qoder documents no user-level instructions file, so the proactive-ask block is not installed. Hooks and MCP are unaffected. Like every agent in this family, the CLI wires it; the macOS app does not yet."
200
200
  },
@@ -208,7 +208,7 @@ var AGENTS = {
208
208
  disconnectable: true,
209
209
  enforcement: "enforced",
210
210
  connectVia: "Native hooks",
211
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
211
+ setupCommand: PUSHARY_SETUP_COMMAND,
212
212
  enforcementDetail: "Execute, Create, Edit and ApplyPatch through native PreToolUse hooks in ~/.factory/hooks.json.",
213
213
  capabilityNote: "Droid registers MCP servers through `droid mcp add` rather than a documented remote-server config shape, so setup writes hooks only. Add Pushary's MCP server yourself to let Droid send notifications and ask questions."
214
214
  },
@@ -222,14 +222,14 @@ var AGENTS = {
222
222
  disconnectable: true,
223
223
  enforcement: "enforced",
224
224
  connectVia: "Native hooks",
225
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
225
+ setupCommand: PUSHARY_SETUP_COMMAND,
226
226
  enforcementDetail: "exec, write and edit through native PreToolUse hooks, answered in Devin's own approve/block schema.",
227
227
  capabilityNote: "Devin CLI answers PreToolUse with `{decision}` rather than a permission decision. Pushary blocks an unanswered approval because this adapter cannot request a native prompt reliably. Question and plan dialogs remain with Devin; this adapter does not render their answers. It also fires no Notification event."
228
228
  },
229
229
  windsurf: {
230
230
  ...defaults,
231
231
  label: "Windsurf",
232
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
232
+ setupCommand: PUSHARY_SETUP_COMMAND,
233
233
  setupChoice: "Other"
234
234
  },
235
235
  unknown: {
@@ -246,7 +246,7 @@ var AGENTS = {
246
246
  ...defaults,
247
247
  hasStoredIdentity: false,
248
248
  label: "Any MCP client",
249
- setupCommand: AGENT_HOOKS_SETUP_COMMAND,
249
+ setupCommand: PUSHARY_SETUP_COMMAND,
250
250
  setupChoice: "Other"
251
251
  },
252
252
  http: {
@@ -467,6 +467,7 @@ var credentialAssignmentRule = (key, doubleQuoted, singleQuoted, bare) => ({
467
467
  replacement: "$1$2$3$4[redacted]$2$3"
468
468
  });
469
469
  var DISPLAYED_SECRET_SHAPES = {
470
+ separator: String.raw`[ \t]`,
470
471
  privateKeyBody: String.raw`${PEM_LINE_BREAK}?(?:(?:Proc-Type|DEK-Info): [A-Za-z0-9,-]+${PEM_LINE_BREAK})*(?:[A-Za-z0-9+/=\r\n]|\\[rn])*?`,
471
472
  urlPassword: `${SHELL_INERT_URL_PASSWORD_UNIT}+`,
472
473
  authorizationValue: `${SHELL_INERT_UNIT}+`,
@@ -478,6 +479,7 @@ var DISPLAYED_SECRET_SHAPES = {
478
479
  )
479
480
  };
480
481
  var CUT_OFF_SECRET_SHAPES = {
482
+ separator: String.raw`\s`,
481
483
  privateKeyBody: String.raw`[\s\S]*?`,
482
484
  urlPassword: String.raw`[^\s@/]+`,
483
485
  authorizationValue: String.raw`\S+`,
@@ -504,8 +506,8 @@ var secretRedactionRules = (shapes) => [
504
506
  { pattern: /\bxai-[A-Za-z0-9]{16,}\b/g, replacement: "[redacted]" },
505
507
  { pattern: /\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\b/g, replacement: "[redacted]" },
506
508
  { pattern: new RegExp(String.raw`\b([a-z][a-z0-9+.-]*:\/\/[^\s:/@]+:)${shapes.urlPassword}@`, "gi"), replacement: "$1[redacted]@" },
507
- { pattern: /\bbearer\s+[A-Za-z0-9._~+/=-]+/gi, replacement: "bearer [redacted]" },
508
- { pattern: new RegExp(String.raw`\bauthorization:\s*${shapes.authorizationValue}`, "gi"), replacement: "authorization: [redacted]" },
509
+ { pattern: new RegExp(String.raw`\bbearer${shapes.separator}+[A-Za-z0-9._~+/=-]+`, "gi"), replacement: "bearer [redacted]" },
510
+ { pattern: new RegExp(String.raw`\bauthorization:${shapes.separator}*${shapes.authorizationValue}`, "gi"), replacement: "authorization: [redacted]" },
509
511
  shapes.credentialAssignment
510
512
  ];
511
513
  var SECRET_REDACTION_RULES = secretRedactionRules(DISPLAYED_SECRET_SHAPES);
@@ -643,7 +645,7 @@ var parseAgentQuestionAnswers = (questions, value) => {
643
645
  return answers;
644
646
  };
645
647
  var INSTALL_SOURCES = [
646
- /** `npx @pushary/agent-hooks@latest ...`, the documented one-liner. */
648
+ /** `npx pushary@latest ...`, the documented one-liner. */
647
649
  "npx",
648
650
  /** A global or project npm install, invoked as `pushary`. */
649
651
  "npm",
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-POFBE6ZY.js";
4
4
  import {
5
5
  autoUpdateState
6
- } from "./chunk-A2A2YTMG.js";
6
+ } from "./chunk-UPLV5AJF.js";
7
7
  import {
8
8
  readJsonSafe,
9
9
  writeJsonAtomic
@@ -14,7 +14,7 @@ import {
14
14
  cliPackagePathSegments,
15
15
  globalUpgradeEntry,
16
16
  ownPackageRoot
17
- } from "./chunk-NQTHFF4W.js";
17
+ } from "./chunk-5YY3IJT4.js";
18
18
 
19
19
  // src/auto-update.ts
20
20
  import { spawn } from "child_process";
@@ -6,38 +6,38 @@ import {
6
6
  } from "./chunk-SGZJ5LYH.js";
7
7
  import {
8
8
  hookOwnerOf
9
- } from "./chunk-EYK3GSRH.js";
9
+ } from "./chunk-GBNQXYN4.js";
10
10
  import {
11
11
  ensureDaemonRunning
12
- } from "./chunk-WE2J62NC.js";
12
+ } from "./chunk-EIGJYCOE.js";
13
13
  import {
14
14
  buildTranscriptRecords,
15
15
  decodePublicKey,
16
16
  generateSessionKey,
17
17
  wrapSessionKey
18
- } from "./chunk-MPWXGONV.js";
18
+ } from "./chunk-URNXU3FO.js";
19
19
  import {
20
20
  fetchTranscriptRecipients,
21
21
  uploadTranscriptRecords
22
- } from "./chunk-SAXBC4AZ.js";
22
+ } from "./chunk-UMMCHS6P.js";
23
23
  import {
24
24
  transcriptEnvironmentPreference,
25
25
  transcriptsEnabled
26
- } from "./chunk-OLQRRFBX.js";
26
+ } from "./chunk-72WOCX22.js";
27
27
  import {
28
28
  readTranscriptPreference
29
- } from "./chunk-P7WQEVWA.js";
29
+ } from "./chunk-TJMAXQ5Q.js";
30
30
  import {
31
31
  codexHome,
32
32
  pusharyDir
33
- } from "./chunk-A2A2YTMG.js";
33
+ } from "./chunk-UPLV5AJF.js";
34
34
  import {
35
35
  writeJsonAtomic
36
36
  } from "./chunk-T7E75EKA.js";
37
37
  import {
38
38
  getApiKey,
39
39
  getBaseUrl
40
- } from "./chunk-GPEGOGRJ.js";
40
+ } from "./chunk-ON5JW2HP.js";
41
41
 
42
42
  // src/transcript-registration.ts
43
43
  import { createHash } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readTranscriptPreference
3
- } from "./chunk-P7WQEVWA.js";
3
+ } from "./chunk-TJMAXQ5Q.js";
4
4
 
5
5
  // src/transcript-setting.ts
6
6
  var transcriptEnvironmentPreference = () => {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isSafeReadOnlyCommand
3
- } from "./chunk-NQTHFF4W.js";
3
+ } from "./chunk-5YY3IJT4.js";
4
4
 
5
5
  // src/ledger.ts
6
6
  import { appendFileSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, statSync } from "fs";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-3EGEA4KH.js";
10
10
  import {
11
11
  getBaseUrl
12
- } from "./chunk-GPEGOGRJ.js";
12
+ } from "./chunk-ON5JW2HP.js";
13
13
 
14
14
  // src/cli/login-ui.ts
15
15
  import { hostname } from "os";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseVersion
3
- } from "./chunk-3EVPNIBE.js";
3
+ } from "./chunk-HTEGMMT3.js";
4
4
 
5
5
  // src/setup/agent-probe.ts
6
6
  import { execSync } from "child_process";
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-KZERVKTD.js";
4
4
  import {
5
5
  renderCommandHelp
6
- } from "./chunk-E4FJTUH4.js";
6
+ } from "./chunk-35X5UDML.js";
7
7
  import {
8
8
  getPackageVersion
9
- } from "./chunk-NQTHFF4W.js";
9
+ } from "./chunk-5YY3IJT4.js";
10
10
 
11
11
  // src/cli/usage.ts
12
12
  var exitOnHelpFlag = (command) => {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  HOOK_HOLD_BUDGET_ENV,
3
3
  hookHoldBudgetProof
4
- } from "./chunk-NQTHFF4W.js";
4
+ } from "./chunk-5YY3IJT4.js";
5
5
 
6
6
  // src/hold-budget.ts
7
7
  var takeHookHoldBudget = (args = process.argv.slice(2), env = process.env) => {
@@ -9,7 +9,7 @@ import {
9
9
  SETUP_CONNECT_MODES,
10
10
  isSetupConnectMode,
11
11
  isValidApiKey
12
- } from "./chunk-NQTHFF4W.js";
12
+ } from "./chunk-5YY3IJT4.js";
13
13
 
14
14
  // src/setup/options.ts
15
15
  var AGENT_CHOICES = SETUP_AGENT_CHOICES;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyFetch
3
- } from "./chunk-2OY3ZZ5N.js";
3
+ } from "./chunk-2SLCHCVN.js";
4
4
  import {
5
5
  NetworkError
6
6
  } from "./chunk-7QLSKOSU.js";
@@ -9,11 +9,11 @@ import {
9
9
  } from "./chunk-KZERVKTD.js";
10
10
  import {
11
11
  getBaseUrl
12
- } from "./chunk-GPEGOGRJ.js";
12
+ } from "./chunk-ON5JW2HP.js";
13
13
  import {
14
14
  isValidApiKey,
15
15
  normalizeKeyScope
16
- } from "./chunk-NQTHFF4W.js";
16
+ } from "./chunk-5YY3IJT4.js";
17
17
 
18
18
  // src/session.ts
19
19
  var samePusharyAccount = (left, right) => left.kind === "ok" && right.kind === "ok" && left.identity.workspaceId !== "" && left.identity.workspaceId === right.identity.workspaceId && left.identity.siteId === right.identity.siteId;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  NPX_LATEST_COMMAND
3
- } from "./chunk-E4FJTUH4.js";
3
+ } from "./chunk-35X5UDML.js";
4
4
 
5
5
  // src/setup/codex-trust.ts
6
6
  var CODEX_TRUST_TELEMETRY = {
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-XHKBHWLX.js";
5
5
  import {
6
6
  readControlMode
7
- } from "./chunk-P7WQEVWA.js";
7
+ } from "./chunk-TJMAXQ5Q.js";
8
8
  import {
9
9
  getMachineId
10
- } from "./chunk-LXQ5FBBD.js";
10
+ } from "./chunk-4A3UQERT.js";
11
11
  import {
12
12
  pusharyDir,
13
13
  resolveGlobalBinary
14
- } from "./chunk-A2A2YTMG.js";
14
+ } from "./chunk-UPLV5AJF.js";
15
15
  import {
16
16
  readJsonSafe,
17
17
  writeFileAtomic,
@@ -20,14 +20,14 @@ import {
20
20
  } from "./chunk-T7E75EKA.js";
21
21
  import {
22
22
  getApiKey
23
- } from "./chunk-GPEGOGRJ.js";
23
+ } from "./chunk-ON5JW2HP.js";
24
24
  import {
25
25
  CLI_PACKAGE_NAMES,
26
26
  cmdShimTarget,
27
27
  getPackageVersion,
28
28
  globalPackageFolder,
29
29
  globalRootFor
30
- } from "./chunk-NQTHFF4W.js";
30
+ } from "./chunk-5YY3IJT4.js";
31
31
 
32
32
  // src/daemon-lifecycle.ts
33
33
  import { dirname, join, win32 as win32Path } from "path";
@@ -14,36 +14,36 @@ import {
14
14
  IDLE_PROMPT_NOTIFICATION,
15
15
  NOTIFICATION_PUSH_TYPES,
16
16
  POSTTOOLUSE_MIRROR_ONLY_TOOLS
17
- } from "./chunk-EPCXUP3P.js";
17
+ } from "./chunk-VFFHQC7W.js";
18
18
  import {
19
19
  cancelQuestion,
20
20
  isPolicyConfig,
21
21
  sendNotification,
22
22
  waitForAnswer
23
- } from "./chunk-NGDD6TXY.js";
23
+ } from "./chunk-MMVCI6DT.js";
24
24
  import {
25
25
  clientErrorKindOf,
26
26
  reportClientError
27
- } from "./chunk-CVQYGMSR.js";
27
+ } from "./chunk-KB2FTO4O.js";
28
28
  import {
29
29
  withRetry
30
- } from "./chunk-M5ICYGHT.js";
30
+ } from "./chunk-I4HKMUZQ.js";
31
31
  import {
32
32
  getMachineId
33
- } from "./chunk-LXQ5FBBD.js";
33
+ } from "./chunk-4A3UQERT.js";
34
34
  import {
35
35
  reportedInstallSource
36
- } from "./chunk-DB3ONZB4.js";
36
+ } from "./chunk-5Y2DY6X4.js";
37
37
  import {
38
38
  canonicalJson
39
- } from "./chunk-A2A2YTMG.js";
39
+ } from "./chunk-UPLV5AJF.js";
40
40
  import {
41
41
  writeFileAtomic
42
42
  } from "./chunk-T7E75EKA.js";
43
43
  import {
44
44
  getApiKey,
45
45
  getBaseUrl
46
- } from "./chunk-GPEGOGRJ.js";
46
+ } from "./chunk-ON5JW2HP.js";
47
47
  import {
48
48
  ACTION_BODY_MAX,
49
49
  AGENT_LABELS_BY_TYPE,
@@ -70,7 +70,7 @@ import {
70
70
  resolvePolicy,
71
71
  toToolLookup,
72
72
  truncateLine
73
- } from "./chunk-NQTHFF4W.js";
73
+ } from "./chunk-5YY3IJT4.js";
74
74
 
75
75
  // src/policy.ts
76
76
  import { createHash } from "crypto";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  registerTranscript
3
- } from "./chunk-JZTHGAPA.js";
3
+ } from "./chunk-6TK4IY3A.js";
4
4
  import {
5
5
  writeDegraded
6
- } from "./chunk-CVQYGMSR.js";
6
+ } from "./chunk-KB2FTO4O.js";
7
7
 
8
8
  // src/tool-hook-input.ts
9
9
  var OPTIONAL_TEXT_FIELDS = ["hook_event_name", "session_id", "cwd", "transcript_path", "tool_use_id", "permission_mode"];
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  AGENT_CHOICES
3
- } from "./chunk-ZVSKMPBZ.js";
3
+ } from "./chunk-DLEKCAQL.js";
4
4
  import {
5
5
  isBridgeLocator
6
- } from "./chunk-C2WCPBF7.js";
6
+ } from "./chunk-MYHG7PX2.js";
7
7
  import {
8
8
  pusharyHookExecutable
9
- } from "./chunk-6J2JC2RT.js";
9
+ } from "./chunk-OCVVSRDA.js";
10
10
  import {
11
11
  BELL_HOOK_BINARY
12
- } from "./chunk-OKXS7WDZ.js";
12
+ } from "./chunk-HOEB6AKG.js";
13
13
 
14
14
  // src/setup/hook-ownership.ts
15
15
  var commandsIn = (value) => {
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  detectClaudeVersion
3
- } from "./chunk-SIFVFP6T.js";
3
+ } from "./chunk-ASWRMBOM.js";
4
4
  import {
5
5
  ensureCodexTrustsPusharyHooks
6
- } from "./chunk-RHR6NARM.js";
6
+ } from "./chunk-W2LJ4O3A.js";
7
7
  import {
8
8
  addClaudeMcpServer,
9
9
  addPusharyHooks,
10
10
  addPusharyToolPermissions
11
- } from "./chunk-AXPCESYO.js";
11
+ } from "./chunk-JRQRNNGA.js";
12
12
  import {
13
13
  claudeUnprovenHolds,
14
14
  claudeWired,
15
15
  codexUnprovenHolds,
16
16
  codexWired,
17
17
  geminiWired
18
- } from "./chunk-6J2JC2RT.js";
18
+ } from "./chunk-OCVVSRDA.js";
19
19
  import {
20
20
  CLAUDE_HOOK_BINARY,
21
21
  CLAUDE_HOOK_EVENTS,
@@ -27,7 +27,7 @@ import {
27
27
  needsReregistration,
28
28
  registrationSignatures,
29
29
  supportedClaudeEvents
30
- } from "./chunk-3EVPNIBE.js";
30
+ } from "./chunk-HTEGMMT3.js";
31
31
  import {
32
32
  CODEX_HOOK_BINARY,
33
33
  addCodexHookTrust,
@@ -47,7 +47,7 @@ import {
47
47
  registrationHolderOf,
48
48
  resolveGlobalBinary,
49
49
  vscodePluginMcp
50
- } from "./chunk-A2A2YTMG.js";
50
+ } from "./chunk-UPLV5AJF.js";
51
51
  import {
52
52
  readJsonSafe,
53
53
  writeFileAtomic,
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  pusharyHookExecutable
3
- } from "./chunk-6J2JC2RT.js";
3
+ } from "./chunk-OCVVSRDA.js";
4
4
  import {
5
5
  isProtectedByScope,
6
6
  registerHookEntry
7
- } from "./chunk-A2A2YTMG.js";
7
+ } from "./chunk-UPLV5AJF.js";
8
8
 
9
9
  // src/skills-cli.ts
10
10
  import { execSync } from "child_process";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readConfigFileKey
3
- } from "./chunk-P7WQEVWA.js";
3
+ } from "./chunk-TJMAXQ5Q.js";
4
4
 
5
5
  // src/bell/fleet.ts
6
6
  import { closeSync, constants, futimesSync, lstatSync, mkdirSync, openSync, readdirSync, unlinkSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  guardBinary
3
- } from "./chunk-A2A2YTMG.js";
3
+ } from "./chunk-UPLV5AJF.js";
4
4
 
5
5
  // src/bell/install.ts
6
6
  import { join } from "path";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  activeHookSource,
3
3
  activeIdentity
4
- } from "./chunk-J5TIV3J6.js";
4
+ } from "./chunk-QB6QYZ6B.js";
5
5
  import {
6
6
  defersToNativeMode,
7
7
  reportMachineDenial
8
- } from "./chunk-CJVVKOSR.js";
8
+ } from "./chunk-5DGNEUXK.js";
9
9
  import {
10
10
  isGatingMoment,
11
11
  recordKeylessMoment
12
- } from "./chunk-JU6W3XAU.js";
12
+ } from "./chunk-7ITOAMCD.js";
13
13
  import {
14
14
  announceSubscriptionRequired,
15
15
  denyReasonFrom,
@@ -39,7 +39,7 @@ import {
39
39
  reportEvent,
40
40
  scopePathFor,
41
41
  settleQuestionsForToolUse
42
- } from "./chunk-CULUZTWQ.js";
42
+ } from "./chunk-F6NTWZZC.js";
43
43
  import {
44
44
  DEFAULT_SESSION
45
45
  } from "./chunk-N6IOSZOE.js";
@@ -55,17 +55,20 @@ import {
55
55
  requestGate,
56
56
  sendNotification,
57
57
  waitForQuestion
58
- } from "./chunk-NGDD6TXY.js";
58
+ } from "./chunk-MMVCI6DT.js";
59
59
  import {
60
60
  SubscriptionRequiredError
61
- } from "./chunk-M5ICYGHT.js";
61
+ } from "./chunk-I4HKMUZQ.js";
62
62
  import {
63
63
  getMachineId
64
- } from "./chunk-LXQ5FBBD.js";
64
+ } from "./chunk-4A3UQERT.js";
65
65
  import {
66
66
  getApiKey,
67
67
  getBaseUrl
68
- } from "./chunk-GPEGOGRJ.js";
68
+ } from "./chunk-ON5JW2HP.js";
69
+ import {
70
+ NPX_LATEST_COMMAND
71
+ } from "./chunk-35X5UDML.js";
69
72
  import {
70
73
  AGENT_QUESTION_STRATEGY,
71
74
  GATE_BLOCK_REASON_MAX_LENGTH,
@@ -93,7 +96,7 @@ import {
93
96
  parseAgentQuestions,
94
97
  resolveGate,
95
98
  stoppedOutput
96
- } from "./chunk-NQTHFF4W.js";
99
+ } from "./chunk-5YY3IJT4.js";
97
100
 
98
101
  // src/claude-permission-rules.ts
99
102
  import { readFileSync, statSync } from "fs";
@@ -356,7 +359,7 @@ var announceWait = (waitSeconds, answerUrl, sessionId) => {
356
359
  } catch {
357
360
  }
358
361
  };
359
- var KEYLESS_NOTICE = "[pushary] Not connected (no API key), so your agent runs untouched. Approval moments are counted locally; see them with: npx @pushary/agent-hooks@latest stats. Connect: https://pushary.com/sign-up?utm_source=cli&utm_medium=keyless-hook";
362
+ var KEYLESS_NOTICE = `[pushary] Not connected (no API key), so your agent runs untouched. Approval moments are counted locally; see them with: ${NPX_LATEST_COMMAND} stats. Connect: https://pushary.com/sign-up?utm_source=cli&utm_medium=keyless-hook`;
360
363
  var keylessNoticeOnce = (sessionId) => {
361
364
  try {
362
365
  if (!oncePerSession("keyless", sessionId)) return;
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  NOTIFICATION_MATCHED_TYPES,
3
3
  POSTTOOLUSE_MIRRORED_TOOLS
4
- } from "./chunk-EPCXUP3P.js";
4
+ } from "./chunk-VFFHQC7W.js";
5
5
  import {
6
6
  isProtectedByScope,
7
7
  registerHookEntry
8
- } from "./chunk-A2A2YTMG.js";
8
+ } from "./chunk-UPLV5AJF.js";
9
9
  import {
10
10
  CLAUDE_PRETOOLUSE_MATCHER,
11
11
  HOOK_BUDGETS,
12
12
  HOOK_LOCATOR_BINARY
13
- } from "./chunk-NQTHFF4W.js";
13
+ } from "./chunk-5YY3IJT4.js";
14
14
 
15
15
  // src/gemini-config.ts
16
16
  var GEMINI_HOOK_BINARY = "pushary-gemini-hook";
@@ -3,11 +3,11 @@ import {
3
3
  decodePublicKey,
4
4
  generateSessionKey,
5
5
  wrapSessionKey
6
- } from "./chunk-MPWXGONV.js";
6
+ } from "./chunk-URNXU3FO.js";
7
7
  import {
8
8
  fetchTranscriptRecipients,
9
9
  uploadTranscriptRecords
10
- } from "./chunk-SAXBC4AZ.js";
10
+ } from "./chunk-UMMCHS6P.js";
11
11
 
12
12
  // src/live-session.ts
13
13
  var MAX_TRANSCRIPT_QUEUE = 100;
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  keyCheckFromResponse
3
- } from "./chunk-2ABTSGFT.js";
3
+ } from "./chunk-DVW2MYCM.js";
4
4
  import {
5
5
  installNetworkDefaults
6
- } from "./chunk-2OY3ZZ5N.js";
6
+ } from "./chunk-2SLCHCVN.js";
7
7
  import {
8
8
  getBaseUrl
9
- } from "./chunk-GPEGOGRJ.js";
9
+ } from "./chunk-ON5JW2HP.js";
10
10
 
11
11
  // src/retry.ts
12
12
  var isRetryable = (err) => {