pushary 1.9.65 → 1.9.67
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 +18 -0
- package/data/SKILL.md +1 -1
- package/data/cursor-plugin/skills/pushary/SKILL.md +1 -1
- package/data/vscode-plugin/skills/pushary/SKILL.md +1 -1
- package/dist/{api-32B3XLJR.js → api-3WIPD5GC.js} +12 -10
- package/dist/bin/pushary-bell-hook.js +25 -27
- package/dist/bin/pushary-bell.js +10 -10
- package/dist/bin/pushary-claude.js +26 -28
- package/dist/bin/pushary-clean.js +74 -77
- package/dist/bin/pushary-codex-bridge.js +21 -22
- package/dist/bin/pushary-codex-hook.js +30 -32
- package/dist/bin/pushary-codex-session.js +8 -8
- package/dist/bin/pushary-codex.js +13 -13
- package/dist/bin/pushary-connect.js +28 -28
- package/dist/bin/pushary-cowork.js +5 -5
- package/dist/bin/pushary-daemon.js +40 -41
- package/dist/bin/pushary-disconnect.js +25 -26
- package/dist/bin/pushary-doctor.js +118 -76
- package/dist/bin/pushary-elicitation-hook.js +25 -27
- package/dist/bin/pushary-gemini-bridge.js +15 -16
- package/dist/bin/pushary-gemini-hook.js +27 -29
- package/dist/bin/pushary-hook.js +29 -31
- package/dist/bin/pushary-login.js +20 -19
- package/dist/bin/pushary-logout.js +26 -28
- package/dist/bin/pushary-mcp.js +11 -11
- package/dist/bin/pushary-mode.js +16 -15
- package/dist/bin/pushary-notification-hook.js +24 -26
- package/dist/bin/pushary-opencode-hook.js +26 -28
- package/dist/bin/pushary-permission-denied-hook.js +29 -31
- package/dist/bin/pushary-permission-hook.js +32 -31
- package/dist/bin/pushary-post-hook.js +24 -26
- package/dist/bin/pushary-prompt-hook.js +24 -26
- package/dist/bin/pushary-session-end-hook.js +26 -28
- package/dist/bin/pushary-session-start-hook.js +34 -35
- package/dist/bin/pushary-setup.js +111 -99
- package/dist/bin/pushary-stats.js +5 -5
- package/dist/bin/pushary-status.js +37 -36
- package/dist/bin/pushary-stop-hook.js +24 -26
- package/dist/bin/pushary-stopfailure-hook.js +24 -26
- package/dist/bin/pushary-suggestions.js +15 -14
- package/dist/bin/pushary-transcript-register.js +16 -18
- package/dist/bin/pushary-transcripts.js +18 -17
- package/dist/bin/pushary-upgrade.js +45 -39
- package/dist/bin/pushary-wait.js +26 -20
- package/dist/bin/pushary.js +7 -7
- package/dist/{chunk-Y64JGYTB.js → chunk-32OSSYGZ.js} +1 -1
- package/dist/{chunk-UHS5MMAI.js → chunk-3THDNNVL.js} +3 -3
- package/dist/{chunk-OA6EADFT.js → chunk-564IPPBL.js} +3 -3
- package/dist/chunk-5MOJCOCF.js +25 -0
- package/dist/{chunk-RRHHWYPX.js → chunk-6H4E5UBA.js} +6 -6
- package/dist/{chunk-UM2X7HL6.js → chunk-6LXXKMV6.js} +42 -16
- package/dist/chunk-76SWHCAR.js +299 -0
- package/dist/{chunk-AN7C3CHH.js → chunk-77L2TNJW.js} +1 -1
- package/dist/{chunk-XJIIU36L.js → chunk-7YJSDXLM.js} +1 -1
- package/dist/{chunk-XZCJC3QO.js → chunk-B3V2WOJX.js} +285 -50
- package/dist/{chunk-RABLE5R6.js → chunk-BBFGDYYI.js} +1 -1
- package/dist/{chunk-GTBWWCCM.js → chunk-BFF3ABFV.js} +115 -9
- package/dist/{chunk-NOH3EJFH.js → chunk-C4EDAHXI.js} +1 -1
- package/dist/{chunk-ITYKN2K3.js → chunk-CHYBOTQN.js} +2 -2
- package/dist/{chunk-FFSIYBBU.js → chunk-CJZLIAJF.js} +27 -10
- package/dist/{chunk-UMTMFDL2.js → chunk-CPLQ5OHX.js} +1 -1
- package/dist/{chunk-DTVHZDYM.js → chunk-D3U6CN7T.js} +26 -12
- package/dist/{chunk-ICFHMJTW.js → chunk-D7Z4USSB.js} +27 -8
- package/dist/{chunk-DXMUJTYF.js → chunk-DP6LU6BB.js} +2 -2
- package/dist/{chunk-GA257T2E.js → chunk-DXCHIKAN.js} +8 -8
- package/dist/{chunk-PP7FC3Y7.js → chunk-EQR6JSFE.js} +9 -7
- package/dist/{chunk-Z3M627TQ.js → chunk-FONWVVDD.js} +1 -1
- package/dist/{chunk-3KXBRSL3.js → chunk-GMHQYX3D.js} +1 -1
- package/dist/{chunk-WY6YAMZW.js → chunk-ICQCQAUO.js} +5 -4
- package/dist/{chunk-CZ65D6Q5.js → chunk-IPG3RS23.js} +2 -2
- package/dist/{chunk-JCWHOB36.js → chunk-IRV2MNMA.js} +53 -3
- package/dist/{chunk-HIYLAC3C.js → chunk-IVB5O6NY.js} +3 -3
- package/dist/{chunk-DM24VZOI.js → chunk-IXTVUINH.js} +3 -3
- package/dist/{chunk-BEQ3MEE3.js → chunk-JBRMIADM.js} +2 -2
- package/dist/{chunk-CU2PXLZ6.js → chunk-JHB5SR5B.js} +4 -4
- package/dist/{chunk-ED2SWTPC.js → chunk-JOBSKQ2Z.js} +4 -4
- package/dist/{chunk-W5L2ZLHE.js → chunk-JOD2325S.js} +3 -3
- package/dist/{chunk-CSKABVSH.js → chunk-JSPCGPSH.js} +3 -3
- package/dist/{chunk-R4FL5JHK.js → chunk-KE4TSJUD.js} +4 -4
- package/dist/{chunk-3LF7T3NW.js → chunk-KIXRHNCW.js} +6 -6
- package/dist/{chunk-BKCI53W6.js → chunk-KNUYUQBP.js} +4 -4
- package/dist/{chunk-4LUWNBGD.js → chunk-KTLE7NIK.js} +23 -8
- package/dist/{chunk-ADXHPGBZ.js → chunk-LJHDUKBB.js} +6 -6
- package/dist/{chunk-U2P2LQ5B.js → chunk-LS42NV6E.js} +15 -6
- package/dist/{chunk-QNZ6G3LY.js → chunk-LYTWK5TF.js} +5 -5
- package/dist/{chunk-2VADJ6JH.js → chunk-METUT7V4.js} +2 -2
- package/dist/{chunk-P5HZEGT7.js → chunk-NSS2AIGI.js} +6 -6
- package/dist/{chunk-QSW3HAKI.js → chunk-NWN6GGJL.js} +61 -2
- package/dist/{chunk-7ILQX47W.js → chunk-P4RXSZDT.js} +3 -3
- package/dist/{chunk-FWS2KLV2.js → chunk-PIBWX3EF.js} +2 -2
- package/dist/{chunk-F56GTJFG.js → chunk-PO2P3XDC.js} +5 -5
- package/dist/{chunk-EEVE7H5Z.js → chunk-R2BZH2NK.js} +4 -4
- package/dist/{chunk-I2UBF2SS.js → chunk-RO2B4YBF.js} +1 -1
- package/dist/{chunk-MNKIR2ZB.js → chunk-RQOT6QL3.js} +67 -6
- package/dist/{chunk-Q2BD4IBX.js → chunk-SB6TYV4M.js} +11 -13
- package/dist/{chunk-ATPJGHUP.js → chunk-TI4JYPGQ.js} +7 -3
- package/dist/{chunk-LMC5UPL7.js → chunk-UC2J5RR4.js} +1 -1
- package/dist/{chunk-IZVEBBDH.js → chunk-UQIPWXBL.js} +3 -3
- package/dist/{chunk-VHKK3US3.js → chunk-UXN73YAE.js} +3 -3
- package/dist/{chunk-WOHP7EL6.js → chunk-VEYFXRZ6.js} +7 -6
- package/dist/{chunk-2Z7I7DHT.js → chunk-VHMZPN3N.js} +1 -1
- package/dist/{chunk-HVOQUPSO.js → chunk-VKZ3RJ5U.js} +1 -1
- package/dist/chunk-VVIQWGS7.js +2298 -0
- package/dist/{chunk-SCMEVDAR.js → chunk-WJLHZ6E6.js} +3 -3
- package/dist/{chunk-BAGBCSXA.js → chunk-X2MTVD4W.js} +1 -1
- package/dist/{chunk-3UNAPXED.js → chunk-XFDWLDHG.js} +9 -9
- package/dist/{chunk-6CZX6YOE.js → chunk-XNUWKKGS.js} +3 -3
- package/dist/{chunk-NUEPJ5W6.js → chunk-XZKSUJ55.js} +3 -5
- package/dist/{chunk-HDGB6SQ4.js → chunk-Y4MRHAE5.js} +2 -2
- package/dist/{chunk-SZBMTOUZ.js → chunk-Y6ZN454E.js} +1 -1
- package/dist/{chunk-TK4JU2F7.js → chunk-YSD4SMHE.js} +1 -1
- package/dist/{chunk-SROWUG5W.js → chunk-ZK5WYAMI.js} +1 -1
- package/dist/{chunk-JFKMPLNF.js → chunk-ZPIYJLQ3.js} +2 -2
- package/dist/{codex-app-cards-switch-HK4RMOBI.js → codex-app-cards-switch-25TDTMUZ.js} +11 -11
- package/dist/{codex-desktop-launch-OCO6N7SA.js → codex-desktop-launch-JDKUCD2Y.js} +1 -1
- package/dist/{codex-session-launch-ETZQTVFS.js → codex-session-launch-6N35AAEO.js} +18 -19
- package/dist/{config-YY54G3CC.js → config-OBGYURFX.js} +3 -3
- package/dist/{global-upgrade-5DN5G3ZQ.js → global-upgrade-2QNQD5OM.js} +10 -10
- package/dist/{identity-EGL6HAWG.js → identity-CUPX2U7Q.js} +4 -4
- package/dist/{live-capabilities-WU3FYJJG.js → live-capabilities-CUEIWMSM.js} +5 -5
- package/dist/{paths-ZG6KDM6Y.js → paths-BHLBZ6FY.js} +7 -3
- package/dist/{reapply-AQLNCCTE.js → reapply-4GXLWZ5M.js} +27 -27
- package/dist/src/index.js +30 -20
- package/dist/{upgrade-lock-BIRXIKHJ.js → upgrade-lock-RDKTAHWR.js} +4 -4
- package/dist/{usage-43C2DHDU.js → usage-KX2HN47E.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-ANP3DIST.js +0 -118
- package/dist/chunk-ONBL2GCU.js +0 -615
- package/dist/chunk-TJUJAK5L.js +0 -62
|
@@ -242,10 +242,10 @@ var AGENTS = {
|
|
|
242
242
|
label: "Hermes",
|
|
243
243
|
policyAgent: "hermes",
|
|
244
244
|
enforcement: "enforced",
|
|
245
|
-
connectVia: "Native
|
|
245
|
+
connectVia: "Native plugin in ~/.hermes/plugins + approval transport",
|
|
246
246
|
setupCommand: PUSHARY_SETUP_COMMAND,
|
|
247
247
|
enforcementDetail: "Hermes dangerous-command approvals when the Pushary transport is selected; optional PUSHARY_GATE_TOOLS gates named tools.",
|
|
248
|
-
capabilityNote: "Uses the
|
|
248
|
+
capabilityNote: "Uses the Pushary plugin in ~/.hermes/plugins/pushary, not a macOS bridge HookSource. CLI disconnect and managed-provider controls are not implemented for Hermes."
|
|
249
249
|
},
|
|
250
250
|
cursor: {
|
|
251
251
|
...defaults,
|
|
@@ -2602,6 +2602,16 @@ var shellCommandStringOf = (shell, args) => {
|
|
|
2602
2602
|
return operand === void 0 || operand.expands ? UNREADABLE2 : { kind: "readable", script: operand.text };
|
|
2603
2603
|
};
|
|
2604
2604
|
|
|
2605
|
+
// ../contracts/src/partner-developer-guide.ts
|
|
2606
|
+
var PARTNER_API_KEYS_URL = "https://pushary.com/dashboard/agent/settings";
|
|
2607
|
+
var PARTNER_INSTALL_COMMAND = "npm i @pushary/server";
|
|
2608
|
+
var PARTNER_DEVELOPER_STEPS = [
|
|
2609
|
+
`Install on our server: ${PARTNER_INSTALL_COMMAND}. Create the client with our Partner API key from ${PARTNER_API_KEYS_URL} and keep the key on the server.`,
|
|
2610
|
+
"For each customer, call pushary.enroll(customerId) and show the universalLink it returns as a button or QR code in our app. They open it in the free Pushary app and allow notifications. Installing the app does not carry the link over, so keep it available until they finish.",
|
|
2611
|
+
"Before a risky action, call pushary.authorize({ externalId: customerId, toolName, question }) and run the action only if approved is true.",
|
|
2612
|
+
"If the answer can come later than the request, create a decision with pushary.decisions.create, save its id, and resume from pushary.decisions.get or the webhook."
|
|
2613
|
+
];
|
|
2614
|
+
|
|
2605
2615
|
// ../contracts/src/degraded.ts
|
|
2606
2616
|
var DEGRADED_PREFIX = "[degraded]";
|
|
2607
2617
|
var degradedPayload = (subsystem, report) => ({
|
|
@@ -2614,6 +2624,16 @@ var degradedPayload = (subsystem, report) => ({
|
|
|
2614
2624
|
});
|
|
2615
2625
|
var degradedLine = (subsystem, report) => `${DEGRADED_PREFIX} ${JSON.stringify(degradedPayload(subsystem, report))}`;
|
|
2616
2626
|
|
|
2627
|
+
// ../contracts/src/key-scope.ts
|
|
2628
|
+
var KEY_SCOPES = ["full_access", "agent", "connector", "bound"];
|
|
2629
|
+
var KEY_SCOPE = {
|
|
2630
|
+
full_access: "full_access",
|
|
2631
|
+
agent: "agent",
|
|
2632
|
+
connector: "connector",
|
|
2633
|
+
bound: "bound"
|
|
2634
|
+
};
|
|
2635
|
+
var normalizeKeyScope = (value) => typeof value === "string" && KEY_SCOPES.includes(value) ? value : null;
|
|
2636
|
+
|
|
2617
2637
|
// ../contracts/src/observability.ts
|
|
2618
2638
|
var CLIENT_CONTEXT_HEADERS = {
|
|
2619
2639
|
surface: "x-pushary-surface",
|
|
@@ -3072,10 +3092,26 @@ var compressTranscriptRecord = (raw, deflateRaw) => {
|
|
|
3072
3092
|
};
|
|
3073
3093
|
|
|
3074
3094
|
// ../contracts/src/index.ts
|
|
3075
|
-
var KEY_SCOPES = ["full_access", "agent", "connector", "bound"];
|
|
3076
|
-
var normalizeKeyScope = (value) => typeof value === "string" && KEY_SCOPES.includes(value) ? value : null;
|
|
3077
3095
|
var APPROVAL_MODES = ["push_only", "terminal_only", "push_first", "notify_only"];
|
|
3078
3096
|
var isApprovalMode = (value) => typeof value === "string" && APPROVAL_MODES.includes(value);
|
|
3097
|
+
var APPROVAL_MODE_META = {
|
|
3098
|
+
push_first: {
|
|
3099
|
+
label: "When away",
|
|
3100
|
+
description: "Ask in the notch. Alert my phone when I\u2019m away."
|
|
3101
|
+
},
|
|
3102
|
+
push_only: {
|
|
3103
|
+
label: "Always",
|
|
3104
|
+
description: "Ask in the notch and on my phone."
|
|
3105
|
+
},
|
|
3106
|
+
notify_only: {
|
|
3107
|
+
label: "Alert only",
|
|
3108
|
+
description: "Notify my phone. I answer in the agent."
|
|
3109
|
+
},
|
|
3110
|
+
terminal_only: {
|
|
3111
|
+
label: "In agent",
|
|
3112
|
+
description: "I answer in the agent. No approval alerts."
|
|
3113
|
+
}
|
|
3114
|
+
};
|
|
3079
3115
|
var approvalWaitsAtTheAgentsPrompt = (mode) => {
|
|
3080
3116
|
switch (mode) {
|
|
3081
3117
|
case "push_first":
|
|
@@ -5757,6 +5793,22 @@ var EXIT_PLAN_MODE_TOOL = "ExitPlanMode";
|
|
|
5757
5793
|
var ASKED_IN_EVERY_MODE_TOOLS = [AGENT_QUESTION_TOOL, EXIT_PLAN_MODE_TOOL];
|
|
5758
5794
|
var ASKED_IN_EVERY_MODE = /* @__PURE__ */ new Set([...ASKED_IN_EVERY_MODE_TOOLS, ...CODEX_QUESTION_TOOLS]);
|
|
5759
5795
|
var isAskedInEveryMode = (toolName) => ASKED_IN_EVERY_MODE.has(toolName);
|
|
5796
|
+
var MODES_WITH_A_TERMINAL_PROMPT = /* @__PURE__ */ new Set(["default", "acceptEdits"]);
|
|
5797
|
+
var TERMINAL_AND_PHONE_REASON = "Pushary may also ask your phone. The first answer counts.";
|
|
5798
|
+
var terminalStaysLiveForTheCall = (facts) => facts.source === "claude" && facts.sessionAttended && facts.permissionHookAdmitted && !facts.handedDownByTheMacBridge && !facts.fromCursor && MODES_WITH_A_TERMINAL_PROMPT.has(facts.permissionMode ?? "") && !isAskedInEveryMode(facts.toolName);
|
|
5799
|
+
var TIMEOUT_DECISIONS = { approve: "allow", deny: "deny" };
|
|
5800
|
+
var pushOnlyTimeoutDecision = (policy) => policy.mode === "push_only" ? TIMEOUT_DECISIONS[policy.timeoutAction] : void 0;
|
|
5801
|
+
var phoneWindowSeconds = (policy) => Math.max(policy.mode === "push_only" ? policy.timeoutSeconds : policy.pushFirstSeconds, 0);
|
|
5802
|
+
var terminalLiveWait = (policy, holdBudgetProof) => {
|
|
5803
|
+
const budget = Math.min(holdBudgetProof ?? HOOK_BUDGETS.claude.budgetSeconds, HOOK_BUDGETS.claude.budgetSeconds);
|
|
5804
|
+
const ceiling = Math.max(budget - HOOK_BUDGETS.claude.guardSeconds, 1);
|
|
5805
|
+
const policySeconds = phoneWindowSeconds(policy);
|
|
5806
|
+
const decision = pushOnlyTimeoutDecision(policy);
|
|
5807
|
+
if (decision !== void 0 && policySeconds <= ceiling) return { waitSeconds: policySeconds, holdSeconds: ceiling, onTimeout: decision };
|
|
5808
|
+
const waitsForThePhone = policy.mode === "push_only" && policy.timeoutAction === "wait";
|
|
5809
|
+
const holdsTheBudget = waitsForThePhone || holdBudgetProof !== void 0 && decision === void 0;
|
|
5810
|
+
return { waitSeconds: holdsTheBudget ? ceiling : Math.min(policySeconds, ceiling), holdSeconds: ceiling, onTimeout: "leave_to_terminal" };
|
|
5811
|
+
};
|
|
5760
5812
|
var NATIVE_BLOCK_EVENTS = /* @__PURE__ */ new Set(["PermissionDenied"]);
|
|
5761
5813
|
var isNativeBlockEvent = (event) => typeof event === "string" && NATIVE_BLOCK_EVENTS.has(event);
|
|
5762
5814
|
var CODEX_RESCUE_TOOL_NAME = "Bash";
|
|
@@ -5833,7 +5885,8 @@ var resolveGate = (input) => {
|
|
|
5833
5885
|
scopePath: scopeReason && "path" in scopeVerdict ? widenablePath(scopeVerdict.path) : void 0
|
|
5834
5886
|
};
|
|
5835
5887
|
};
|
|
5836
|
-
var
|
|
5888
|
+
var noModeOverrideIsActive = (input) => (input.modeState.mode ?? input.config.modeOverride ?? null) === null;
|
|
5889
|
+
var editAsksAtTheAgentsPrompt = (input, verdict) => verdict.kind === "gate" && !verdict.scopeReason && noModeOverrideIsActive(input) && !aChosenRuleGoverns(input) && verdict.policy.mode === "push_first" && FILE_EDIT_TOOLS.has(input.toolName);
|
|
5837
5890
|
var claudePromptsBeforeAnEdit = (permissionMode) => permissionMode === "default";
|
|
5838
5891
|
var runsTheClaudeHook = (source) => source === null || source === "claude" || hookCompatibleProfileBySource(source) !== void 0;
|
|
5839
5892
|
var agentPromptsBeforeAnEdit = ({ source, event, permissionMode }) => {
|
|
@@ -5950,6 +6003,7 @@ var aChosenRuleGoverns = (input) => {
|
|
|
5950
6003
|
});
|
|
5951
6004
|
};
|
|
5952
6005
|
var claudeAllowlistOwnsCall = (input, verdict, permissionMode, rules) => rules !== null && verdict.kind === "gate" && !verdict.scopeReason && !aChosenRuleGoverns(input) && !isAskedInEveryMode(input.toolName) && claudeConsultsItsAllowlist(permissionMode) && agentRulesAllowEveryInput(rules, input.toolName, input.toolInputs, input.cwd);
|
|
6006
|
+
var claudePromptTakesTheCall = (facts, input, verdict) => verdict.kind === "gate" && !verdict.scopeReason && terminalStaysLiveForTheCall(facts) && noModeOverrideIsActive(input) && !aChosenRuleGoverns(input) && !editGoesToTheAgentsPrompt({ source: facts.source, event: "PreToolUse", permissionMode: facts.permissionMode }, input, verdict);
|
|
5953
6007
|
var toPolicyVersion = (value) => typeof value === "string" || typeof value === "number" ? String(value) : null;
|
|
5954
6008
|
var modeStateFromResponse = (data) => {
|
|
5955
6009
|
const mode = data.override?.mode;
|
|
@@ -6337,6 +6391,8 @@ export {
|
|
|
6337
6391
|
toolsCoveredByGateEntry,
|
|
6338
6392
|
cursorGateOwnsToolCall,
|
|
6339
6393
|
degradedLine,
|
|
6394
|
+
KEY_SCOPE,
|
|
6395
|
+
normalizeKeyScope,
|
|
6340
6396
|
hookWritePath,
|
|
6341
6397
|
MAX_HOOK_ACTIVATION_EVIDENCE_ROWS,
|
|
6342
6398
|
isHookActivationReport,
|
|
@@ -6371,8 +6427,8 @@ export {
|
|
|
6371
6427
|
parseCodexNativeApproval,
|
|
6372
6428
|
codexNativeApprovalResponse,
|
|
6373
6429
|
compressTranscriptRecord,
|
|
6374
|
-
normalizeKeyScope,
|
|
6375
6430
|
isApprovalMode,
|
|
6431
|
+
APPROVAL_MODE_META,
|
|
6376
6432
|
approvalModeWithoutLocalPrompt,
|
|
6377
6433
|
timeoutActionWithoutLocalPrompt,
|
|
6378
6434
|
isTimeoutAction,
|
|
@@ -6426,12 +6482,16 @@ export {
|
|
|
6426
6482
|
codexQuestionGoesToPushary,
|
|
6427
6483
|
agentQuestionStrategy,
|
|
6428
6484
|
questionHandedToTheTerminal,
|
|
6485
|
+
TERMINAL_AND_PHONE_REASON,
|
|
6486
|
+
terminalStaysLiveForTheCall,
|
|
6487
|
+
terminalLiveWait,
|
|
6429
6488
|
CODEX_RESCUE_TOOL_NAME,
|
|
6430
6489
|
isBlockedActionRequest,
|
|
6431
6490
|
canonicalJsonText,
|
|
6432
6491
|
BLOCKED_ACTION_GRANT_TTL_SECONDS,
|
|
6433
6492
|
blockedActionIdentity,
|
|
6434
6493
|
PRETOOLUSE_GATED_TOOLS,
|
|
6494
|
+
PRETOOLUSE_HANDLED_TOOLS,
|
|
6435
6495
|
isPermissionRequestOwnedByPreToolUse,
|
|
6436
6496
|
CLAUDE_PRETOOLUSE_MATCHER,
|
|
6437
6497
|
resolveGate,
|
|
@@ -6453,6 +6513,7 @@ export {
|
|
|
6453
6513
|
claudeConsultsItsAllowlist,
|
|
6454
6514
|
agentRulesAllowEveryInput,
|
|
6455
6515
|
claudeAllowlistOwnsCall,
|
|
6516
|
+
claudePromptTakesTheCall,
|
|
6456
6517
|
modeStateFromResponse,
|
|
6457
6518
|
GATE_WIRE,
|
|
6458
6519
|
GATE_MAX_TOOL_INPUTS,
|
|
@@ -3,43 +3,41 @@ import {
|
|
|
3
3
|
loadPin,
|
|
4
4
|
savePin,
|
|
5
5
|
verifyRecipients
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-Y6ZN454E.js";
|
|
7
7
|
import {
|
|
8
8
|
ensureDaemonRunning
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-LJHDUKBB.js";
|
|
10
10
|
import {
|
|
11
11
|
hookOwnerOf
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-BFF3ABFV.js";
|
|
13
13
|
import {
|
|
14
14
|
buildTranscriptRecords,
|
|
15
15
|
decodePublicKey,
|
|
16
|
+
fetchTranscriptRecipients,
|
|
16
17
|
generateSessionKey,
|
|
17
18
|
recordSealerFor,
|
|
19
|
+
uploadTranscriptRecords,
|
|
18
20
|
wrapSessionKey
|
|
19
|
-
} from "./chunk-
|
|
20
|
-
import {
|
|
21
|
-
fetchTranscriptRecipients,
|
|
22
|
-
uploadTranscriptRecords
|
|
23
|
-
} from "./chunk-TJUJAK5L.js";
|
|
21
|
+
} from "./chunk-NWN6GGJL.js";
|
|
24
22
|
import {
|
|
25
23
|
transcriptEnvironmentPreference,
|
|
26
24
|
transcriptsEnabled
|
|
27
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-YSD4SMHE.js";
|
|
28
26
|
import {
|
|
29
27
|
readTranscriptPreference
|
|
30
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-JOBSKQ2Z.js";
|
|
31
29
|
import {
|
|
32
30
|
claudeConfigDir,
|
|
33
31
|
codexHome,
|
|
34
32
|
pusharyDir
|
|
35
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-TI4JYPGQ.js";
|
|
36
34
|
import {
|
|
37
35
|
writeJsonAtomic
|
|
38
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-WJLHZ6E6.js";
|
|
39
37
|
import {
|
|
40
38
|
getApiKey,
|
|
41
39
|
getBaseUrl
|
|
42
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-32OSSYGZ.js";
|
|
43
41
|
|
|
44
42
|
// src/transcript-registration.ts
|
|
45
43
|
import { createHash } from "crypto";
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
quoteIfNeeded,
|
|
5
5
|
shellDoubleQuoted,
|
|
6
6
|
writeFileAtomic
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WJLHZ6E6.js";
|
|
8
8
|
import {
|
|
9
9
|
CLAUDE_PRETOOLUSE_MATCHER,
|
|
10
10
|
CODEX_QUESTION_TOOLS,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
HOOK_LOCATOR_BINARY,
|
|
13
13
|
PRETOOLUSE_GATED_TOOLS,
|
|
14
14
|
withHookHoldBudget
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-RQOT6QL3.js";
|
|
16
16
|
|
|
17
17
|
// src/setup/paths.ts
|
|
18
18
|
import { createHash as createHash2 } from "crypto";
|
|
@@ -550,7 +550,7 @@ var CLAUDE_HOOK_EVENTS = [
|
|
|
550
550
|
{ event: "SessionStart", binary: "pushary-session-start-hook", matcher: "startup|resume|clear", timeout: 10, delivery: "telemetry", since: ESTABLISHED },
|
|
551
551
|
{ event: "SessionEnd", binary: "pushary-session-end-hook", timeout: 10, delivery: "telemetry", since: ESTABLISHED },
|
|
552
552
|
{ event: "StopFailure", binary: "pushary-stopfailure-hook", timeout: 10, delivery: "telemetry", since: ESTABLISHED },
|
|
553
|
-
{ event: "PermissionRequest", binary: "pushary-permission-hook", timeout: HOOK_BUDGETS.claude.budgetSeconds, delivery: "approval", since: ESTABLISHED },
|
|
553
|
+
{ event: "PermissionRequest", binary: "pushary-permission-hook", timeout: HOOK_BUDGETS.claude.budgetSeconds, delivery: "approval", holds: true, since: ESTABLISHED },
|
|
554
554
|
{ event: "PermissionDenied", binary: "pushary-permission-denied-hook", timeout: HOOK_BUDGETS.claude.budgetSeconds, delivery: "approval", holds: true, since: ESTABLISHED },
|
|
555
555
|
// Observability only. Each carries session shape the island cannot get any other
|
|
556
556
|
// way, and none of them decides anything.
|
|
@@ -1049,6 +1049,8 @@ var clientReportClaims = () => join5(pusharyDir(), "client-reports");
|
|
|
1049
1049
|
var claudeRegistrationReceipt = () => join5(claudeSetupDir(), "claude-registration.json");
|
|
1050
1050
|
var hermesConfig = () => join5(homedir3(), ".hermes", "config.yaml");
|
|
1051
1051
|
var hermesConfigReceipt = () => join5(pusharyDir(), "setup", "hermes-config.json");
|
|
1052
|
+
var hermesSetupReceipt = () => join5(pusharyDir(), "setup", "hermes-plugin.json");
|
|
1053
|
+
var hermesAppWiringRecord = () => join5(pusharyDir(), "setup", "hermes-wired-by-mac-app");
|
|
1052
1054
|
var fxQuestionRuleReceipt = () => join5(pusharyDir(), "setup", "fx-question-rule.json");
|
|
1053
1055
|
var hookTakeoverReceipt = (agent) => join5(agent === "claude_code" ? claudeSetupDir() : join5(pusharyDir(), "setup"), `hook-takeover-${agent}.json`);
|
|
1054
1056
|
var codexSkillDir2 = () => join5(codexHome(), "skills", "pushary");
|
|
@@ -1185,6 +1187,8 @@ export {
|
|
|
1185
1187
|
claudeRegistrationReceipt,
|
|
1186
1188
|
hermesConfig,
|
|
1187
1189
|
hermesConfigReceipt,
|
|
1190
|
+
hermesSetupReceipt,
|
|
1191
|
+
hermesAppWiringRecord,
|
|
1188
1192
|
fxQuestionRuleReceipt,
|
|
1189
1193
|
hookTakeoverReceipt,
|
|
1190
1194
|
codexSkillDir2,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
pusharyDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TI4JYPGQ.js";
|
|
4
4
|
import {
|
|
5
5
|
readJsonSafe,
|
|
6
6
|
writeFileAtomic
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WJLHZ6E6.js";
|
|
8
8
|
import {
|
|
9
9
|
DECLINED_AGENTS_FILE,
|
|
10
10
|
DISCONNECT_AGENT_IDS,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
serializeDeclinedAgents,
|
|
14
14
|
withDeclinedAgent,
|
|
15
15
|
withoutDeclinedAgent
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-RQOT6QL3.js";
|
|
17
17
|
|
|
18
18
|
// src/declined-agents-file.ts
|
|
19
19
|
import { join } from "path";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SETUP_FLAGS
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZK5WYAMI.js";
|
|
4
4
|
import {
|
|
5
5
|
parseFlags
|
|
6
6
|
} from "./chunk-NMUI3ZWG.js";
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "./chunk-PPY5N2E6.js";
|
|
10
10
|
import {
|
|
11
11
|
NPX_LATEST_COMMAND
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-X2MTVD4W.js";
|
|
13
13
|
import {
|
|
14
14
|
CLAUDE_CONNECTOR_GUIDE,
|
|
15
15
|
CLAUDE_CONNECTOR_STEPS,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
CLAUDE_CONNECTOR_URL,
|
|
18
18
|
COWORK_CONNECTOR_LIMIT,
|
|
19
19
|
COWORK_STANDING_INSTRUCTIONS
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-RQOT6QL3.js";
|
|
21
21
|
|
|
22
22
|
// src/cli/cowork.ts
|
|
23
23
|
import { readFileSync } from "fs";
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
forkFinishWithUpgradeLock,
|
|
4
4
|
installWithUpgradeLock,
|
|
5
5
|
releaseAutoUpdateLock
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-DP6LU6BB.js";
|
|
7
7
|
import {
|
|
8
8
|
phoneStartIsRequired
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-KE4TSJUD.js";
|
|
10
10
|
import {
|
|
11
11
|
describeAutoUpdateCheck,
|
|
12
12
|
globalInstallLocation,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
readAutoUpdateState,
|
|
19
19
|
updateAutoUpdateState,
|
|
20
20
|
upgradeEntryFor
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-IXTVUINH.js";
|
|
22
22
|
import {
|
|
23
23
|
EXIT
|
|
24
24
|
} from "./chunk-KZERVKTD.js";
|
|
@@ -26,17 +26,17 @@ import {
|
|
|
26
26
|
autoUpdateLock,
|
|
27
27
|
autoUpdateLog,
|
|
28
28
|
autoUpdateState
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-TI4JYPGQ.js";
|
|
30
30
|
import {
|
|
31
31
|
execNpm,
|
|
32
32
|
fetchLatestPublishedVersion,
|
|
33
33
|
npmErrorMessage,
|
|
34
34
|
readGlobalCliInstallAt,
|
|
35
35
|
readGlobalPrefix
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-WJLHZ6E6.js";
|
|
37
37
|
import {
|
|
38
38
|
NPX_LATEST_COMMAND
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-X2MTVD4W.js";
|
|
40
40
|
import {
|
|
41
41
|
commandsPackage,
|
|
42
42
|
globalUpgradeEntry,
|
|
@@ -60,6 +60,7 @@ var refreshedPartsOf = (agent) => [
|
|
|
60
60
|
...agent.result.hooks ? ["hooks"] : [],
|
|
61
61
|
...agent.result.mcp ? ["MCP key"] : [],
|
|
62
62
|
...agent.result.approvalRules ? ["approval rules"] : [],
|
|
63
|
+
...agent.result.pluginFiles ? ["plugin"] : [],
|
|
63
64
|
...agent.instructions?.outcome === "refreshed" ? ["instructions"] : []
|
|
64
65
|
];
|
|
65
66
|
var wasRefreshed = (agent) => refreshedPartsOf(agent).length > 0;
|