pushary 1.9.143 → 1.9.145
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 +13 -0
- package/data/SKILL.md +4 -2
- package/data/cursor-plugin/skills/pushary/SKILL.md +3 -1
- package/data/vscode-plugin/skills/pushary/SKILL.md +3 -1
- package/dist/{api-2YC2KSIM.js → api-KWJQMO6G.js} +11 -11
- package/dist/bin/pushary-audit.js +3 -3
- package/dist/bin/pushary-bell-hook.js +28 -28
- package/dist/bin/pushary-bell.js +10 -10
- package/dist/bin/pushary-claude.js +27 -27
- package/dist/bin/pushary-clean.js +35 -35
- package/dist/bin/pushary-codex-bridge.js +23 -23
- package/dist/bin/pushary-codex-hook.js +35 -35
- package/dist/bin/pushary-codex-session.js +8 -8
- package/dist/bin/pushary-codex.js +16 -16
- package/dist/bin/pushary-connect.js +29 -29
- package/dist/bin/pushary-cowork.js +5 -5
- package/dist/bin/pushary-daemon.js +43 -43
- package/dist/bin/pushary-disconnect.js +28 -28
- package/dist/bin/pushary-display-hook.js +7 -0
- package/dist/bin/pushary-doctor.js +58 -43
- package/dist/bin/pushary-elicitation-hook.js +28 -28
- package/dist/bin/pushary-gemini-bridge.js +17 -17
- package/dist/bin/pushary-gemini-hook.js +32 -32
- package/dist/bin/pushary-hook.js +35 -35
- package/dist/bin/pushary-login.js +21 -21
- package/dist/bin/pushary-logout.js +27 -27
- package/dist/bin/pushary-mcp.js +12 -12
- package/dist/bin/pushary-mode.js +15 -15
- package/dist/bin/pushary-notification-hook.js +27 -27
- package/dist/bin/pushary-opencode-hook.js +31 -31
- package/dist/bin/pushary-permission-denied-hook.js +35 -35
- package/dist/bin/pushary-permission-hook.js +35 -35
- package/dist/bin/pushary-post-hook.js +28 -28
- package/dist/bin/pushary-prompt-hook.js +27 -27
- package/dist/bin/pushary-session-end-hook.js +27 -27
- package/dist/bin/pushary-session-start-hook.js +36 -36
- package/dist/bin/pushary-setup.js +122 -54
- package/dist/bin/pushary-stats.js +5 -5
- package/dist/bin/pushary-status.js +33 -33
- package/dist/bin/pushary-stop-hook.js +27 -27
- package/dist/bin/pushary-stopfailure-hook.js +27 -27
- package/dist/bin/pushary-suggestions.js +15 -15
- package/dist/bin/pushary-transcript-register.js +17 -17
- package/dist/bin/pushary-transcripts.js +25 -25
- package/dist/bin/pushary-upgrade.js +41 -41
- package/dist/bin/pushary-wait.js +15 -15
- package/dist/bin/pushary.js +7 -7
- package/dist/{chunk-XWYCFODT.js → chunk-2ELNRGNX.js} +3 -3
- package/dist/{chunk-PYSDCPZ3.js → chunk-2LGDEPVL.js} +6 -6
- package/dist/{chunk-5TZYAMGW.js → chunk-33BYPZ52.js} +1 -1
- package/dist/{chunk-LUVSHGLH.js → chunk-4KDRT3OA.js} +1 -1
- package/dist/{chunk-B4VIT5N3.js → chunk-4L5WPDTB.js} +1 -1
- package/dist/{chunk-EGUT2MWV.js → chunk-52UXNCZG.js} +3 -3
- package/dist/{chunk-NZHRH4RR.js → chunk-5TWW7ZUL.js} +5 -5
- package/dist/{chunk-DU4KCXC2.js → chunk-63WX5KZN.js} +3 -3
- package/dist/{chunk-DOXH5BV4.js → chunk-6IWOMXUF.js} +4 -4
- package/dist/{chunk-R7FSMUHG.js → chunk-6LZ7MXHD.js} +2 -1
- package/dist/{chunk-EMODTMHE.js → chunk-6UK4K5RS.js} +1 -1
- package/dist/{chunk-IG7NGXBS.js → chunk-72LP4RPC.js} +3 -2
- package/dist/{chunk-MMS7R3VO.js → chunk-7LTP2GHO.js} +2 -2
- package/dist/{chunk-QESEICW4.js → chunk-A2H256WR.js} +1 -1
- package/dist/{chunk-4YH326C5.js → chunk-B4JQIH5M.js} +6 -6
- package/dist/{chunk-4EBJ4PTZ.js → chunk-BWREST4F.js} +1 -1
- package/dist/{chunk-ZVJIJPQY.js → chunk-BYKRAYGD.js} +1 -1
- package/dist/{chunk-3VOUWGFF.js → chunk-CUR2DCZN.js} +4 -4
- package/dist/chunk-D3UFDCTQ.js +87 -0
- package/dist/{chunk-UIZE4YMU.js → chunk-DZIZ3XFL.js} +2 -2
- package/dist/{chunk-QQHUUPPW.js → chunk-EPWOARGR.js} +2 -2
- package/dist/{chunk-LWQLM3AO.js → chunk-FCSPMSDC.js} +4 -4
- package/dist/{chunk-X2MC2CF3.js → chunk-FNAH3YJC.js} +16 -16
- package/dist/{chunk-ZKKZEVNI.js → chunk-G3VSMI7K.js} +2 -2
- package/dist/{chunk-SYZF5SDG.js → chunk-GK5X2ZTN.js} +5 -5
- package/dist/{chunk-UJETZZG5.js → chunk-GURIOZE7.js} +8 -8
- package/dist/{chunk-7VMVMC4H.js → chunk-HOQH5CLZ.js} +1 -1
- package/dist/{chunk-LS6BU5RM.js → chunk-IDLOJIIS.js} +1 -1
- package/dist/{chunk-P5QXH5QI.js → chunk-IIN26HL7.js} +1 -1
- package/dist/{chunk-22CXL7YI.js → chunk-IRPIMQ7U.js} +3 -3
- package/dist/{chunk-4JTZZXB3.js → chunk-JKWUF776.js} +3 -3
- package/dist/{chunk-7QWH257P.js → chunk-JZT2LPRM.js} +1 -1
- package/dist/{chunk-QGJK3NAR.js → chunk-K2SKUBYY.js} +12 -12
- package/dist/{chunk-K7MVCPH5.js → chunk-KFALRZIN.js} +4 -4
- package/dist/{chunk-44Z6MQZ2.js → chunk-KGFB2LEB.js} +3 -3
- package/dist/{chunk-NOTW7GOC.js → chunk-KKPT7ROP.js} +2 -2
- package/dist/{chunk-4Z7YVVKQ.js → chunk-KS3PNTRT.js} +1 -1
- package/dist/{chunk-6JLANX5L.js → chunk-L4OGTRVW.js} +4 -4
- package/dist/{chunk-QLGLUUOP.js → chunk-LD4R2P6N.js} +1 -1
- package/dist/{chunk-4OX4SJGA.js → chunk-LJRPWUST.js} +3 -3
- package/dist/{chunk-DDJHPMBJ.js → chunk-LMU6NG2G.js} +1 -1
- package/dist/{chunk-C5LIS3XM.js → chunk-LQXUWXQP.js} +7 -0
- package/dist/{chunk-MOYEHNFP.js → chunk-MKHVLDMN.js} +2 -2
- package/dist/{chunk-G3G7DWR3.js → chunk-MNU5N3CQ.js} +11 -11
- package/dist/{chunk-BHKODM4L.js → chunk-MOC2DN42.js} +2 -2
- package/dist/{chunk-FS47XZCE.js → chunk-NTMKJRQ3.js} +2 -2
- package/dist/{chunk-WSKBXADV.js → chunk-OONMKLUF.js} +4 -4
- package/dist/{chunk-NQF652IG.js → chunk-PXZTCR4M.js} +2 -2
- package/dist/{chunk-V7CS72Q5.js → chunk-PY6CM4NK.js} +6 -6
- package/dist/{chunk-G7G2ZPT4.js → chunk-Q6P7G4NY.js} +4 -4
- package/dist/{chunk-KRSZFHNS.js → chunk-QKTF7WS6.js} +67 -4
- package/dist/{chunk-5RSM5DRT.js → chunk-R34RWVN2.js} +6 -5
- package/dist/{chunk-FYB6HBHQ.js → chunk-RO6EVL5C.js} +2 -2
- package/dist/{chunk-SMF4TBPU.js → chunk-RWLNTZK5.js} +5 -5
- package/dist/{chunk-LTPKSJWY.js → chunk-S3A4PCRR.js} +10 -10
- package/dist/{chunk-YCU7Y77H.js → chunk-S7HGPKCL.js} +1 -1
- package/dist/{chunk-MH5BRZOQ.js → chunk-SQL5YXUH.js} +1 -1
- package/dist/{chunk-MLOYBLO4.js → chunk-TJXJGMSP.js} +4 -4
- package/dist/{chunk-MQF6MQMR.js → chunk-TRV3ETGY.js} +5 -5
- package/dist/{chunk-42DRRA6N.js → chunk-USFZJAB4.js} +1 -1
- package/dist/{chunk-QFZNPZRO.js → chunk-VTJ4WZOC.js} +3 -3
- package/dist/{chunk-ZF4CPOO7.js → chunk-WH4ODOCE.js} +6 -6
- package/dist/{chunk-3WZMIDGX.js → chunk-WMBWKPKJ.js} +5 -5
- package/dist/{chunk-HIIXYZYV.js → chunk-WOSO4YFQ.js} +3 -3
- package/dist/{chunk-V53QYJNY.js → chunk-WPBWJMBZ.js} +5 -5
- package/dist/{chunk-USNGPJXF.js → chunk-WUT3PO33.js} +8 -8
- package/dist/{chunk-R27HXRSK.js → chunk-Y7INHH5G.js} +3 -3
- package/dist/{chunk-ZDOTNMGL.js → chunk-YNCVSKUW.js} +10 -8
- package/dist/{chunk-DZLLKJJT.js → chunk-YRJZF5RG.js} +3 -3
- package/dist/{chunk-CNURORKI.js → chunk-YU5XE6VC.js} +6 -6
- package/dist/{chunk-TKFNIDZK.js → chunk-YZA3YBHX.js} +2 -2
- package/dist/{chunk-53KLGXFL.js → chunk-ZBMVOMFG.js} +4 -3
- package/dist/{chunk-H33CFJOF.js → chunk-ZJZNT2G5.js} +4 -4
- package/dist/{chunk-HLWS6ADK.js → chunk-ZORBUQFG.js} +2 -2
- package/dist/{chunk-KP6FVUCC.js → chunk-ZSOCJHL7.js} +188 -13
- package/dist/{codex-app-cards-switch-EGUHSLTG.js → codex-app-cards-switch-F7WQ7Y3I.js} +11 -11
- package/dist/{codex-card-routing-I6YOJBTT.js → codex-card-routing-EVL5L36G.js} +2 -2
- package/dist/{codex-desktop-launch-6UN5CWCX.js → codex-desktop-launch-PL6Z2ELZ.js} +1 -1
- package/dist/{codex-session-launch-7R3HNIDJ.js → codex-session-launch-7NQEAUDU.js} +20 -20
- package/dist/{config-2CHOLFNB.js → config-KFFD4VWH.js} +3 -3
- package/dist/{global-upgrade-CCVIYELF.js → global-upgrade-L3CY6EFF.js} +9 -9
- package/dist/{identity-7QA3EDOM.js → identity-DPYYIMHL.js} +4 -4
- package/dist/{live-capabilities-SDMX6CPZ.js → live-capabilities-QJEXK6GH.js} +4 -4
- package/dist/{paths-ZC6XY73Q.js → paths-PEF6C64P.js} +3 -3
- package/dist/{reapply-W6AIK5PH.js → reapply-7APCQRRK.js} +29 -29
- package/dist/src/index.js +34 -34
- package/dist/{upgrade-lock-BRVUBSLD.js → upgrade-lock-A7OKXMRW.js} +4 -4
- package/dist/{usage-GWUTCS5A.js → usage-HSS33762.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-I6HXZIER.js +0 -31
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseSseMessages
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WPBWJMBZ.js";
|
|
4
4
|
import {
|
|
5
5
|
fetchAsCredential
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-S7HGPKCL.js";
|
|
7
7
|
import {
|
|
8
8
|
NPX_LATEST_COMMAND
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-6LZ7MXHD.js";
|
|
10
10
|
|
|
11
11
|
// src/mcp-stdio-bridge.ts
|
|
12
12
|
var MCP_BRIDGE_BINARY = "pushary-mcp";
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
2
|
cursorGateOwnsClaudeCall,
|
|
3
3
|
readCursorGateRegistration
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-L4OGTRVW.js";
|
|
5
5
|
import {
|
|
6
6
|
registerTranscript
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-S3A4PCRR.js";
|
|
8
8
|
import {
|
|
9
9
|
namedEvent
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-R34RWVN2.js";
|
|
11
11
|
import {
|
|
12
12
|
writeDegraded
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-YU5XE6VC.js";
|
|
14
14
|
import {
|
|
15
15
|
claudeShapedHookInput,
|
|
16
16
|
hookCompatibleProfileBySource,
|
|
17
17
|
isGrokHookPayload,
|
|
18
18
|
isGrokSessionEndStop
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-LQXUWXQP.js";
|
|
20
20
|
|
|
21
21
|
// src/tool-hook-input.ts
|
|
22
22
|
var OPTIONAL_TEXT_FIELDS = ["hook_event_name", "session_id", "cwd", "transcript_path", "tool_use_id", "permission_mode", "cursor_version"];
|
|
@@ -4,15 +4,15 @@ import {
|
|
|
4
4
|
claimThrottle,
|
|
5
5
|
releaseThrottle,
|
|
6
6
|
reportEvent
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-K2SKUBYY.js";
|
|
8
8
|
import {
|
|
9
9
|
deriveToolTarget,
|
|
10
10
|
permissionDeniedAction
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-JZT2LPRM.js";
|
|
12
12
|
import {
|
|
13
13
|
machineDecisionFor,
|
|
14
14
|
wireVerdictFor
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-LQXUWXQP.js";
|
|
16
16
|
|
|
17
17
|
// src/machine-decision-audit.ts
|
|
18
18
|
import { basename } from "path";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compatibleConfigFile,
|
|
3
3
|
hasCompatibleHooks
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-R34RWVN2.js";
|
|
5
5
|
import {
|
|
6
6
|
pusharyHookExecutable
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CUR2DCZN.js";
|
|
8
8
|
import {
|
|
9
9
|
isProtectedByScope,
|
|
10
10
|
registerHookEntry
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-72LP4RPC.js";
|
|
12
12
|
import {
|
|
13
13
|
isRecord
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-LQXUWXQP.js";
|
|
15
15
|
|
|
16
16
|
// src/cursor-config.ts
|
|
17
17
|
var hookCommandOf = (entry) => {
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
DISCONNECT_AGENT_IDS,
|
|
3
3
|
SETUP_AGENT_CHOICES,
|
|
4
4
|
isApprovalMode
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-LQXUWXQP.js";
|
|
6
6
|
|
|
7
7
|
// src/cli/mode-request.ts
|
|
8
8
|
var parseDuration = (value) => {
|
|
@@ -241,6 +241,7 @@ var SETUP_OPTIONS = [
|
|
|
241
241
|
["--transcripts on|off", "Enable or disable encrypted transcript sync on this machine"],
|
|
242
242
|
["--skip-phone", "Skip pairing a phone"],
|
|
243
243
|
["--take-over-hooks", "Replace hooks the Pushary Mac app owns with the CLI's. Without it the app's wiring is kept"],
|
|
244
|
+
["--hermes-gate-terminal", "Add Hermes's terminal tool to PUSHARY_GATE_TOOLS when Hermes skips its own approvals on a container backend"],
|
|
244
245
|
["--verify roundtrip", "Send a real question and wait for you to answer it (default when a human is present)"],
|
|
245
246
|
["--verify push", "Only prove a notification was delivered. Automatic when nobody is at the terminal"],
|
|
246
247
|
["--verify none", "Skip the final check entirely"],
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
formatVersion,
|
|
4
4
|
quoteIfNeeded,
|
|
5
5
|
shellDoubleQuoted
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VTJ4WZOC.js";
|
|
7
7
|
import {
|
|
8
8
|
writeFileAtomic
|
|
9
9
|
} from "./chunk-TODDEIYG.js";
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
PRETOOLUSE_GATED_TOOLS,
|
|
21
21
|
PUSHARY_TOOL_PREFIX,
|
|
22
22
|
withHookHoldBudget
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-LQXUWXQP.js";
|
|
24
24
|
|
|
25
25
|
// src/setup/paths.ts
|
|
26
26
|
import { createHash as createHash2 } from "crypto";
|
|
@@ -953,6 +953,7 @@ You have Pushary MCP tools that reach the user on their phone. Use them proactiv
|
|
|
953
953
|
- Call \`propose_scope\` only for an unresolved or requested file boundary. A ratified scope narrows what may proceed; it does not bypass other approval rules. Do not add a plan approval merely because work spans several files, and do not propose a new scope mid-run just to widen it. Let the installed gate request any scope expansion before the edit executes. Only file paths are checked, and only on tool calls that carry one, so put a boundary that is not a path (recipients, channels, spend, systems you will not open) in \`promises\` and never in \`allowedPaths\`. Read the \`enforces\` field that comes back: an empty array means nothing in that contract is checked automatically, and you must say so rather than report that a scope is in force. \`hookSeen: false\` means no hook has reported that sessionId, so the gate will never find the contract: fix the session id rather than proceeding as if a scope were in force.
|
|
954
954
|
- Before a task of more than two steps, break it into steps and find the forks. Settle by yourself every fork that a file, a command or a tool call can answer, then ask the rest as one numbered round with your recommended answer against each. A question in the terminal is free; a push is not. When the user is at the terminal, ask the whole round there. When the user is away, send only the fork that stops the run. Decide another fork on your recommendation only if it is reversible, spends nothing and stays inside the task, and list it in your final message; ask the rest once the first answer is back.
|
|
955
955
|
- When you are blocked, stuck, or hit an error you cannot resolve on your own, call \`send_notification\` so the user knows, and call \`ask_user\` if you need a decision to continue.
|
|
956
|
+
- When the user asks you to call, phone or ring them if you get stuck or blocked, ask with \`ask_user\`; there is no separate call tool. Pushary may phone them only when the \`ask_user\` reply includes \`phoneCall\`, and then records the spoken answer as the answer; without \`phoneCall\` no call is planned, so do not promise one. While the reply is pending and has no \`handoffAction\`, keep waiting with \`wait_for_answer\` and the same correlationId; when it has one, follow it.
|
|
956
957
|
- When meaningful work finishes while the user is away, or they requested an alert, call \`send_notification\` so the user knows it is done. Skip trivial completions and duplicate reports to someone already reading. Always pass \`context\` with a \`type\` of "task_complete", "error" or "info": it is what tells Pushary this is a task update, so the user's own setting for where updates land can route it.
|
|
957
958
|
- Confirm notifications can offer lock-screen actions; arbitrary choices and text open the app. The Mac notch answers questions too.
|
|
958
959
|
- Use \`cancel_question\` to retract a pending question once it is no longer needed.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
callDecisionStore,
|
|
3
3
|
identifyingToolInput
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-K2SKUBYY.js";
|
|
5
5
|
import {
|
|
6
6
|
canonicalJson
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-72LP4RPC.js";
|
|
8
8
|
|
|
9
9
|
// src/phone-approval.ts
|
|
10
10
|
import { createHash } from "crypto";
|
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
SIGNED_OUT_ON_MAC_MESSAGE,
|
|
3
3
|
describeSignedOutKey,
|
|
4
4
|
readSignedOutDiagnosis
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-G3VSMI7K.js";
|
|
6
6
|
import {
|
|
7
7
|
APPROVAL_RULES_PATH
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-YZA3YBHX.js";
|
|
9
9
|
import {
|
|
10
10
|
createIo
|
|
11
11
|
} from "./chunk-FO3MDD26.js";
|
|
@@ -14,19 +14,19 @@ import {
|
|
|
14
14
|
checkApiKey,
|
|
15
15
|
describeKeyCheck,
|
|
16
16
|
keyCheckFromResponse
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-YRJZF5RG.js";
|
|
18
18
|
import {
|
|
19
19
|
readKeySource
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-WOSO4YFQ.js";
|
|
21
21
|
import {
|
|
22
22
|
getBaseUrl
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-BWREST4F.js";
|
|
24
24
|
import {
|
|
25
25
|
EXIT
|
|
26
26
|
} from "./chunk-BG4HHB7E.js";
|
|
27
27
|
import {
|
|
28
28
|
KEY_SCOPE
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-LQXUWXQP.js";
|
|
30
30
|
|
|
31
31
|
// src/cli/report-key.ts
|
|
32
32
|
var { dim, yellow } = createIo();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AGENT_CHOICES
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZBMVOMFG.js";
|
|
4
4
|
import {
|
|
5
5
|
BELL_HOOK_BINARY
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-SQL5YXUH.js";
|
|
7
7
|
import {
|
|
8
8
|
CLAUDE_HOOK_EVENTS,
|
|
9
9
|
CODEX_HOOK_EVENTS,
|
|
@@ -16,13 +16,13 @@ import {
|
|
|
16
16
|
isBridgeLocator,
|
|
17
17
|
isProtectedByScope,
|
|
18
18
|
registerHookEntry
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-72LP4RPC.js";
|
|
20
20
|
import {
|
|
21
21
|
CURSOR_GATE_EVENTS,
|
|
22
22
|
HOOK_BUDGETS,
|
|
23
23
|
HOOK_LOCATOR_BINARY,
|
|
24
24
|
hookCommandHoldBudget
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-LQXUWXQP.js";
|
|
26
26
|
|
|
27
27
|
// src/gemini-config.ts
|
|
28
28
|
var GEMINI_HOOK_BINARY = "pushary-gemini-hook";
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import {
|
|
2
|
+
HERMES_APPROVAL_TRANSPORT_KEY,
|
|
3
|
+
HERMES_COMMAND_ALLOWLIST_KEY,
|
|
4
|
+
HERMES_DOCKER_MOUNT_CWD_KEY,
|
|
5
|
+
HERMES_DOCKER_VOLUMES_KEY,
|
|
6
|
+
HERMES_GATE_TOOLS_KEY,
|
|
7
|
+
HERMES_TERMINAL_ENV_KEY,
|
|
8
|
+
HERMES_TERMINAL_SECTION,
|
|
9
|
+
gateToolsWithShell,
|
|
10
|
+
gatesHermesShell,
|
|
11
|
+
hermesAlwaysAllowsShell,
|
|
12
|
+
hermesApprovalCoverage,
|
|
13
|
+
hermesGateToolsFrom,
|
|
14
|
+
hermesShellGateState,
|
|
15
|
+
readHermesSetting,
|
|
16
|
+
readSetupReceipt,
|
|
17
|
+
receiptWithSnapshot,
|
|
18
|
+
settingSnapshot,
|
|
19
|
+
writeHermesSetting,
|
|
20
|
+
writeSetupReceipt
|
|
21
|
+
} from "./chunk-ZSOCJHL7.js";
|
|
22
|
+
import {
|
|
23
|
+
configFilePath
|
|
24
|
+
} from "./chunk-BWREST4F.js";
|
|
25
|
+
import {
|
|
26
|
+
readJsonSafe,
|
|
27
|
+
writeJsonAtomic
|
|
28
|
+
} from "./chunk-TODDEIYG.js";
|
|
29
|
+
import {
|
|
30
|
+
readSetupOutcomeProperties
|
|
31
|
+
} from "./chunk-LQXUWXQP.js";
|
|
32
|
+
|
|
33
|
+
// src/hermes/shell-gate.ts
|
|
34
|
+
var readHermesShellGate = async (launcher) => {
|
|
35
|
+
const [terminal, terminalEnv, dockerVolumes, dockerMountCwd, gateReading, allowlist, transport] = await Promise.all([
|
|
36
|
+
readHermesSetting(launcher, HERMES_TERMINAL_SECTION),
|
|
37
|
+
readHermesSetting(launcher, HERMES_TERMINAL_ENV_KEY),
|
|
38
|
+
readHermesSetting(launcher, HERMES_DOCKER_VOLUMES_KEY),
|
|
39
|
+
readHermesSetting(launcher, HERMES_DOCKER_MOUNT_CWD_KEY),
|
|
40
|
+
readHermesSetting(launcher, HERMES_GATE_TOOLS_KEY),
|
|
41
|
+
readHermesSetting(launcher, HERMES_COMMAND_ALLOWLIST_KEY),
|
|
42
|
+
readHermesSetting(launcher, HERMES_APPROVAL_TRANSPORT_KEY)
|
|
43
|
+
]);
|
|
44
|
+
return hermesShellGateState({
|
|
45
|
+
coverage: hermesApprovalCoverage({ terminal, terminalEnv, dockerVolumes, dockerMountCwd }),
|
|
46
|
+
gate: hermesGateToolsFrom(gateReading),
|
|
47
|
+
alwaysAllowed: hermesAlwaysAllowsShell({ allowlist, transport })
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
var RECEIPT_FAILURES = {
|
|
51
|
+
missing: "receipt_missing",
|
|
52
|
+
invalid: "receipt_invalid"
|
|
53
|
+
};
|
|
54
|
+
var gateHermesShell = async (request) => {
|
|
55
|
+
const stored = readSetupReceipt(request.receipts);
|
|
56
|
+
if (stored.kind !== "ok") return { kind: "failed", reason: RECEIPT_FAILURES[stored.kind] };
|
|
57
|
+
const reading = await readHermesSetting(request.launcher, HERMES_GATE_TOOLS_KEY);
|
|
58
|
+
const gate = hermesGateToolsFrom(reading);
|
|
59
|
+
if (gatesHermesShell(gate)) return { kind: "already_gated" };
|
|
60
|
+
const value = gateToolsWithShell(gate);
|
|
61
|
+
if (reading === null || value === null) return { kind: "failed", reason: "setting_unreadable" };
|
|
62
|
+
writeSetupReceipt(request.receipts, receiptWithSnapshot(stored.receipt, settingSnapshot(HERMES_GATE_TOOLS_KEY, reading)));
|
|
63
|
+
return await writeHermesSetting(request.launcher, HERMES_GATE_TOOLS_KEY, value) ? { kind: "gated", value } : { kind: "failed", reason: "setting_refused" };
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// src/setup/failure-record.ts
|
|
67
|
+
import { dirname, join } from "path";
|
|
68
|
+
var failurePath = () => join(dirname(configFilePath()), "last-setup-failure.json");
|
|
69
|
+
var saveSetupFailure = (body, path = failurePath()) => {
|
|
70
|
+
const properties = readSetupOutcomeProperties(body);
|
|
71
|
+
if (properties.exitCode === null || properties.exitCode === 0) return;
|
|
72
|
+
writeJsonAtomic(path, { ...properties, recordedAt: (/* @__PURE__ */ new Date()).toISOString() }, 384);
|
|
73
|
+
};
|
|
74
|
+
var readSetupFailure = (path = failurePath()) => {
|
|
75
|
+
const result = readJsonSafe(path);
|
|
76
|
+
if (result.kind !== "ok" || typeof result.value !== "object" || result.value === null || Array.isArray(result.value)) return null;
|
|
77
|
+
const body = result.value;
|
|
78
|
+
if (!("recordedAt" in body) || typeof body.recordedAt !== "string" || body.recordedAt.length > 30 || !Number.isFinite(Date.parse(body.recordedAt))) return null;
|
|
79
|
+
return { ...readSetupOutcomeProperties({ ...body }), recordedAt: body.recordedAt };
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export {
|
|
83
|
+
readHermesShellGate,
|
|
84
|
+
gateHermesShell,
|
|
85
|
+
saveSetupFailure,
|
|
86
|
+
readSetupFailure
|
|
87
|
+
};
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-CYTPQDQY.js";
|
|
4
4
|
import {
|
|
5
5
|
parseVersion
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VTJ4WZOC.js";
|
|
7
7
|
import {
|
|
8
8
|
isRecord
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-LQXUWXQP.js";
|
|
10
10
|
|
|
11
11
|
// src/setup/agent-probe.ts
|
|
12
12
|
import { execSync } from "child_process";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
autoUpdateLock
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-72LP4RPC.js";
|
|
4
4
|
import {
|
|
5
5
|
installPackageGlobally,
|
|
6
6
|
npmErrorMessage,
|
|
7
7
|
npmExitedOnPermissionDenied
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VTJ4WZOC.js";
|
|
9
9
|
import {
|
|
10
10
|
writeJsonAtomic
|
|
11
11
|
} from "./chunk-TODDEIYG.js";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
reachVerdict,
|
|
13
13
|
reachesYou,
|
|
14
14
|
verifyDelivery
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-PY6CM4NK.js";
|
|
16
16
|
import {
|
|
17
17
|
humanIsTty,
|
|
18
18
|
writeHuman
|
|
@@ -24,14 +24,14 @@ import {
|
|
|
24
24
|
} from "./chunk-FO3MDD26.js";
|
|
25
25
|
import {
|
|
26
26
|
reportedInstallSource
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-MOC2DN42.js";
|
|
28
28
|
import {
|
|
29
29
|
NPX_LATEST_COMMAND
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-6LZ7MXHD.js";
|
|
31
31
|
import {
|
|
32
32
|
NO_PAIRING_COMPUTER,
|
|
33
33
|
PAIR_TTL_SECONDS
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-LQXUWXQP.js";
|
|
35
35
|
|
|
36
36
|
// src/onboarding.ts
|
|
37
37
|
import qrcodeTerminal from "qrcode-terminal";
|
|
@@ -2,37 +2,37 @@ import {
|
|
|
2
2
|
forgetPhoneApproval,
|
|
3
3
|
rememberPhoneApproval,
|
|
4
4
|
takePhoneApproval
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-7LTP2GHO.js";
|
|
6
6
|
import {
|
|
7
7
|
claudeSettingsLocationFor,
|
|
8
8
|
readClaudePermissionRules
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-NTMKJRQ3.js";
|
|
10
10
|
import {
|
|
11
11
|
askAgentQuestions,
|
|
12
12
|
defersToNativeMode,
|
|
13
13
|
outcomeOfFailedAsk,
|
|
14
14
|
storedWaitDeadline
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-TRV3ETGY.js";
|
|
16
16
|
import {
|
|
17
17
|
reportMachineDenial
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-63WX5KZN.js";
|
|
19
19
|
import {
|
|
20
20
|
isGatingMoment,
|
|
21
21
|
recordKeylessMoment
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-33BYPZ52.js";
|
|
23
23
|
import {
|
|
24
24
|
isAdmitted,
|
|
25
25
|
readAdmissionRules
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-5TWW7ZUL.js";
|
|
27
27
|
import {
|
|
28
28
|
isDeferAnswer,
|
|
29
29
|
oncePerSession
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-USFZJAB4.js";
|
|
31
31
|
import {
|
|
32
32
|
activeHookSource,
|
|
33
33
|
activeIdentity,
|
|
34
34
|
namedSource
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-R34RWVN2.js";
|
|
36
36
|
import {
|
|
37
37
|
DEFAULT_SESSION,
|
|
38
38
|
approvalAwaitingRetry,
|
|
@@ -53,7 +53,7 @@ import {
|
|
|
53
53
|
settleQuestionsForToolUse,
|
|
54
54
|
sweepFilesOlderThan,
|
|
55
55
|
userScope
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-K2SKUBYY.js";
|
|
57
57
|
import {
|
|
58
58
|
UNNAMED_ACTION,
|
|
59
59
|
deriveAction,
|
|
@@ -64,12 +64,12 @@ import {
|
|
|
64
64
|
patchDeletesFiles,
|
|
65
65
|
permissionDeniedAction,
|
|
66
66
|
scopePathFor
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-JZT2LPRM.js";
|
|
68
68
|
import {
|
|
69
69
|
branchFor,
|
|
70
70
|
repoKeyFor,
|
|
71
71
|
repositoryScopeFor
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-6UK4K5RS.js";
|
|
73
73
|
import {
|
|
74
74
|
askUser,
|
|
75
75
|
cancelQuestion,
|
|
@@ -86,20 +86,20 @@ import {
|
|
|
86
86
|
waitForQuestion,
|
|
87
87
|
waitsForThePhone,
|
|
88
88
|
withdrawQuestion
|
|
89
|
-
} from "./chunk-
|
|
89
|
+
} from "./chunk-YU5XE6VC.js";
|
|
90
90
|
import {
|
|
91
91
|
getMachineId
|
|
92
|
-
} from "./chunk-
|
|
92
|
+
} from "./chunk-KS3PNTRT.js";
|
|
93
93
|
import {
|
|
94
94
|
getApiKey,
|
|
95
95
|
getBaseUrl
|
|
96
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-BWREST4F.js";
|
|
97
97
|
import {
|
|
98
98
|
writeFileAtomic
|
|
99
99
|
} from "./chunk-TODDEIYG.js";
|
|
100
100
|
import {
|
|
101
101
|
NPX_LATEST_COMMAND
|
|
102
|
-
} from "./chunk-
|
|
102
|
+
} from "./chunk-6LZ7MXHD.js";
|
|
103
103
|
import {
|
|
104
104
|
AGENT_QUESTION_STRATEGY,
|
|
105
105
|
AGENT_QUESTION_TOOL,
|
|
@@ -168,7 +168,7 @@ import {
|
|
|
168
168
|
timeoutActionWithoutLocalPrompt,
|
|
169
169
|
unansweredRefusalReason,
|
|
170
170
|
unapprovedScopeReason
|
|
171
|
-
} from "./chunk-
|
|
171
|
+
} from "./chunk-LQXUWXQP.js";
|
|
172
172
|
|
|
173
173
|
// src/terminal-answer-watch.ts
|
|
174
174
|
import { closeSync, openSync, readSync, statSync } from "fs";
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
keyPrefix,
|
|
5
5
|
readConfigFileKey,
|
|
6
6
|
readMacAppKeyPrefix
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WOSO4YFQ.js";
|
|
8
8
|
import {
|
|
9
9
|
NPX_LATEST_COMMAND
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-6LZ7MXHD.js";
|
|
11
11
|
|
|
12
12
|
// src/key-signed-out.ts
|
|
13
13
|
var VERDICT_BY_CHECK = {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compatibleConfigFile
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-R34RWVN2.js";
|
|
4
4
|
import {
|
|
5
5
|
hookOwnerOf,
|
|
6
6
|
hookOwnerOfCommands
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CUR2DCZN.js";
|
|
8
8
|
import {
|
|
9
9
|
AGENT_CHOICES
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ZBMVOMFG.js";
|
|
11
11
|
import {
|
|
12
12
|
bridgeStub,
|
|
13
13
|
claudeSettings,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
resolveBridgeStub,
|
|
20
20
|
vscodePluginDir,
|
|
21
21
|
windowsNodeLauncherFor
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-72LP4RPC.js";
|
|
23
23
|
import {
|
|
24
24
|
readJsonSafe
|
|
25
25
|
} from "./chunk-TODDEIYG.js";
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
OPENCODE_APPROVAL_EVENT,
|
|
30
30
|
hookCompatibleProfile,
|
|
31
31
|
isRecord
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-LQXUWXQP.js";
|
|
33
33
|
|
|
34
34
|
// src/opencode-plugin.ts
|
|
35
35
|
var OPENCODE_PLUGIN_MARKER = "pushary-opencode-plugin w1";
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MANAGED_CLAUDE_SETTINGS_BY_PLATFORM
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NTMKJRQ3.js";
|
|
4
4
|
import {
|
|
5
5
|
declinedAgentsFile,
|
|
6
6
|
readDeclinedAgents
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-KKPT7ROP.js";
|
|
8
8
|
import {
|
|
9
9
|
OPENCODE_HOOK_BINARY,
|
|
10
10
|
openCodeConfigDir,
|
|
11
11
|
openCodePluginArgv,
|
|
12
12
|
openCodePluginFile
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-GK5X2ZTN.js";
|
|
14
14
|
import {
|
|
15
15
|
liveCursorGateCoverage
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-L4OGTRVW.js";
|
|
17
17
|
import {
|
|
18
18
|
compatibleConfigFile,
|
|
19
19
|
compatibleHookEvents,
|
|
20
20
|
grokHome,
|
|
21
21
|
parseConfigDocument
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-R34RWVN2.js";
|
|
23
23
|
import {
|
|
24
24
|
DEFAULT_HOOKS_KEY_PATH,
|
|
25
25
|
GEMINI_HOOK_BINARY,
|
|
26
26
|
GEMINI_HOOK_EVENTS,
|
|
27
27
|
hooksAt
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-CUR2DCZN.js";
|
|
29
29
|
import {
|
|
30
30
|
CODEX_EARLIER_APPROVAL_MATCHERS,
|
|
31
31
|
CODEX_HOOK_BINARY,
|
|
@@ -53,7 +53,7 @@ import {
|
|
|
53
53
|
parseHookArgv,
|
|
54
54
|
parseHookCommand,
|
|
55
55
|
supportedClaudeEvents
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-72LP4RPC.js";
|
|
57
57
|
import {
|
|
58
58
|
readRegularJsonFile,
|
|
59
59
|
readRegularTextFile
|
|
@@ -67,7 +67,7 @@ import {
|
|
|
67
67
|
OPENCODE_APPROVAL_EVENT,
|
|
68
68
|
isRecord,
|
|
69
69
|
matcherMatchesEveryCall
|
|
70
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-LQXUWXQP.js";
|
|
71
71
|
|
|
72
72
|
// src/hook-wiring.ts
|
|
73
73
|
import { createHash } from "crypto";
|
|
@@ -3,15 +3,15 @@ import {
|
|
|
3
3
|
} from "./chunk-XMSDA5WA.js";
|
|
4
4
|
import {
|
|
5
5
|
fetchAsCredential
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-S7HGPKCL.js";
|
|
7
7
|
import {
|
|
8
8
|
getBaseUrl
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-BWREST4F.js";
|
|
10
10
|
import {
|
|
11
11
|
compressTranscriptRecord,
|
|
12
12
|
redactSecretsFromContent,
|
|
13
13
|
transcriptRecordPlaintext
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-LQXUWXQP.js";
|
|
15
15
|
|
|
16
16
|
// src/transcript-api.ts
|
|
17
17
|
var providerRecipientSchema = external_exports.object({
|