pushary 1.9.136 → 1.9.137
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 +11 -0
- package/dist/bin/pushary-bell-hook.js +3 -3
- package/dist/bin/pushary-claude.js +2 -2
- package/dist/bin/pushary-clean.js +9 -9
- package/dist/bin/pushary-codex-hook.js +3 -3
- package/dist/bin/pushary-codex-session.js +2 -2
- package/dist/bin/pushary-daemon.js +3 -3
- package/dist/bin/pushary-display-hook.js +36 -24
- package/dist/bin/pushary-doctor.js +12 -8
- package/dist/bin/pushary-elicitation-hook.js +3 -3
- package/dist/bin/pushary-gemini-hook.js +3 -3
- package/dist/bin/pushary-hook.js +4 -4
- package/dist/bin/pushary-login.js +1 -1
- package/dist/bin/pushary-notification-hook.js +3 -3
- package/dist/bin/pushary-opencode-hook.js +3 -3
- package/dist/bin/pushary-permission-denied-hook.js +4 -4
- package/dist/bin/pushary-permission-hook.js +4 -4
- package/dist/bin/pushary-post-hook.js +3 -3
- package/dist/bin/pushary-prompt-hook.js +3 -3
- package/dist/bin/pushary-session-end-hook.js +3 -3
- package/dist/bin/pushary-session-start-hook.js +3 -3
- package/dist/bin/pushary-setup.js +11 -9
- package/dist/bin/pushary-status.js +2 -2
- package/dist/bin/pushary-stop-hook.js +3 -3
- package/dist/bin/pushary-stopfailure-hook.js +3 -3
- package/dist/bin/pushary-transcript-register.js +2 -2
- package/dist/bin/pushary-transcripts.js +2 -2
- package/dist/bin/pushary-upgrade.js +2 -2
- package/dist/{chunk-L7Q57R4J.js → chunk-6WT5OIRM.js} +1 -1
- package/dist/{chunk-EQZB5P6I.js → chunk-7NCI2DGB.js} +2 -2
- package/dist/{chunk-RPFSVNH6.js → chunk-7VKW7OA5.js} +1 -1
- package/dist/{chunk-YURIU333.js → chunk-7XD56GXA.js} +1 -1
- package/dist/chunk-B4UIRMOE.js +31 -0
- package/dist/{chunk-HKJLPVPZ.js → chunk-CMAB4KQG.js} +1 -1
- package/dist/{chunk-FAF5RDWT.js → chunk-MD63J3T7.js} +229 -38
- package/dist/{chunk-O5T53LZ5.js → chunk-R6N6FREL.js} +1 -1
- package/dist/{chunk-J42EAEX3.js → chunk-XR27HPYC.js} +2 -1
- package/dist/{codex-app-cards-switch-Z7TMF2OR.js → codex-app-cards-switch-JU236CG2.js} +3 -3
- package/dist/{codex-desktop-launch-HKXGKL3T.js → codex-desktop-launch-LRQ4LU64.js} +1 -1
- package/dist/src/index.js +4 -4
- package/package.json +1 -1
- package/dist/chunk-GACQSKNG.js +0 -75
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.137
|
|
4
|
+
|
|
5
|
+
- After `npm uninstall -g pushary`, the background service stops trying to start the removed program. Before, macOS and Linux restarted it every 10 seconds for good, writing an error each time.
|
|
6
|
+
- macOS: the service exits cleanly when it starts and Pushary is gone, so launchd does not restart it.
|
|
7
|
+
- Linux: systemd skips the start when the program is gone, at login and on its automatic restarts. systemd 253 and older check the start condition again on each restart; 254 and newer run the unit's new condition command, which versions before 243 ignore with a warning.
|
|
8
|
+
- Linux: that condition command runs with the service's Node, so a Node that cannot run also skips the start instead of failing it, for example after nvm or asdf removed that version. `pushary doctor` reports a Node that is gone and says to run `pushary daemon install`; it does not catch a Node that is there but broken.
|
|
9
|
+
- Nothing is deleted. Reinstalling Pushary does not start the daemon by itself: it starts at your next login or agent session, or when you run `pushary setup` or `pushary upgrade`. The same now holds if the daemon restarts in the moment `npm install -g` is replacing its files, or at a login where the program's disk is not mounted yet: it stays down until then, where before it came back 10 seconds later.
|
|
10
|
+
- A service you already have gets this the next time setup, `pushary upgrade` or `pushary daemon install` rewrites it. On Linux automatic updates are paused, so run `pushary upgrade` there.
|
|
11
|
+
- `pushary doctor` fails a row when the background service starts a Pushary install that is gone.
|
|
12
|
+
- Windows did not loop and is unchanged. A supervisor still running when the package is removed restarts a crashed daemon, with backoff, until you log off.
|
|
13
|
+
|
|
3
14
|
## 1.9.136
|
|
4
15
|
|
|
5
16
|
- Qwen Code: tapping yes on your phone lets the command run. Before, Qwen read Pushary's yes as "carry on to the usual prompt", so the command still waited at Qwen's own approval prompt in the terminal while your phone showed the question as answered. A call Pushary already allows, such as a read-only command or an auto-approve rule from the dashboard, now runs at that prompt too. CodeBuddy and Qoder already ran the call on a yes and are unchanged.
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
} from "../chunk-MENTZJHA.js";
|
|
5
5
|
import {
|
|
6
6
|
readHookInput
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-7XD56GXA.js";
|
|
8
8
|
import "../chunk-NN43KGTN.js";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-6WT5OIRM.js";
|
|
10
10
|
import "../chunk-VAE5JBR5.js";
|
|
11
11
|
import "../chunk-G66WIAST.js";
|
|
12
12
|
import "../chunk-43DT3QWZ.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-MD63J3T7.js";
|
|
14
14
|
import "../chunk-TLK5YLIE.js";
|
|
15
15
|
import "../chunk-D7AAAD6W.js";
|
|
16
16
|
import "../chunk-A2YJ2FBR.js";
|
|
@@ -24,12 +24,12 @@ import {
|
|
|
24
24
|
registerTranscript,
|
|
25
25
|
registeredTranscriptEnabled,
|
|
26
26
|
startDraftPublisher
|
|
27
|
-
} from "../chunk-
|
|
27
|
+
} from "../chunk-6WT5OIRM.js";
|
|
28
28
|
import "../chunk-VAE5JBR5.js";
|
|
29
29
|
import "../chunk-G66WIAST.js";
|
|
30
30
|
import {
|
|
31
31
|
ensureDaemonRunning
|
|
32
|
-
} from "../chunk-
|
|
32
|
+
} from "../chunk-MD63J3T7.js";
|
|
33
33
|
import "../chunk-TLK5YLIE.js";
|
|
34
34
|
import {
|
|
35
35
|
DEFAULT_SESSION,
|
|
@@ -15,13 +15,13 @@ import {
|
|
|
15
15
|
storedMacAppState,
|
|
16
16
|
storedPusharyKeychainServices,
|
|
17
17
|
waitForMacAppExit
|
|
18
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-7NCI2DGB.js";
|
|
19
19
|
import {
|
|
20
20
|
PUSHARY_SKILL_NAME,
|
|
21
21
|
PUSHARY_SKILL_SOURCE,
|
|
22
22
|
createGuards
|
|
23
|
-
} from "../chunk-
|
|
24
|
-
import "../chunk-
|
|
23
|
+
} from "../chunk-XR27HPYC.js";
|
|
24
|
+
import "../chunk-7VKW7OA5.js";
|
|
25
25
|
import "../chunk-XCEN33UP.js";
|
|
26
26
|
import {
|
|
27
27
|
describeCliKeyRevocation,
|
|
@@ -98,7 +98,7 @@ import {
|
|
|
98
98
|
} from "../chunk-43DT3QWZ.js";
|
|
99
99
|
import {
|
|
100
100
|
disableDaemonService
|
|
101
|
-
} from "../chunk-
|
|
101
|
+
} from "../chunk-MD63J3T7.js";
|
|
102
102
|
import {
|
|
103
103
|
hookOwnerOf,
|
|
104
104
|
isHookTakeoverReceipt,
|
|
@@ -623,9 +623,9 @@ var cursorPluginLeftovers = () => {
|
|
|
623
623
|
var guardedDaemonRemoval = async () => {
|
|
624
624
|
if (dryRun) {
|
|
625
625
|
wouldNote("stop and uninstall", "Pushary background service");
|
|
626
|
-
return
|
|
626
|
+
return { kind: "ok" };
|
|
627
627
|
}
|
|
628
|
-
return
|
|
628
|
+
return disableDaemonService({ requireAbsenceProof: true });
|
|
629
629
|
};
|
|
630
630
|
var guardedInstructionBlockRemoval = (path) => {
|
|
631
631
|
if (!dryRun) return removeInstructionBlock(path);
|
|
@@ -880,9 +880,9 @@ var main = async () => {
|
|
|
880
880
|
console.log(` ${dim("Fix the hooks file or receipt above, then re-run")} ${NPX_LATEST_COMMAND} clean`);
|
|
881
881
|
process.exit(EXIT.FAILED);
|
|
882
882
|
}
|
|
883
|
-
const
|
|
884
|
-
if (
|
|
885
|
-
console.log(` ${cross} Background service ${dim(
|
|
883
|
+
const daemonRemoval = await guardedDaemonRemoval();
|
|
884
|
+
if (daemonRemoval.kind !== "ok") {
|
|
885
|
+
console.log(` ${cross} Background service ${dim(`(could not stop or uninstall: ${daemonRemoval.detail})`)}`);
|
|
886
886
|
console.log(` ${yellow(bold("Clean stopped before changing provider configuration or local state."))}`);
|
|
887
887
|
console.log(` ${dim("Fix the background service, then re-run")} ${NPX_LATEST_COMMAND} clean`);
|
|
888
888
|
console.log();
|
|
@@ -23,17 +23,17 @@ import {
|
|
|
23
23
|
} from "../chunk-ICCM3DLT.js";
|
|
24
24
|
import {
|
|
25
25
|
readHookInput
|
|
26
|
-
} from "../chunk-
|
|
26
|
+
} from "../chunk-7XD56GXA.js";
|
|
27
27
|
import "../chunk-NN43KGTN.js";
|
|
28
28
|
import {
|
|
29
29
|
announceSubscriptionRequired,
|
|
30
30
|
isDeferAnswer
|
|
31
31
|
} from "../chunk-H2RE3IPK.js";
|
|
32
|
-
import "../chunk-
|
|
32
|
+
import "../chunk-6WT5OIRM.js";
|
|
33
33
|
import "../chunk-VAE5JBR5.js";
|
|
34
34
|
import "../chunk-G66WIAST.js";
|
|
35
35
|
import "../chunk-43DT3QWZ.js";
|
|
36
|
-
import "../chunk-
|
|
36
|
+
import "../chunk-MD63J3T7.js";
|
|
37
37
|
import "../chunk-TLK5YLIE.js";
|
|
38
38
|
import {
|
|
39
39
|
CODEX_AGENT,
|
|
@@ -19,7 +19,7 @@ var desktopAccount = async () => {
|
|
|
19
19
|
return null;
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
|
-
var desktopLaunch = await import("../codex-desktop-launch-
|
|
22
|
+
var desktopLaunch = await import("../codex-desktop-launch-LRQ4LU64.js").catch(() => null);
|
|
23
23
|
if (desktopLaunch === null && appBehindTheProxy !== void 0) {
|
|
24
24
|
process.exitCode = await letCodexRunWithoutPushary(appBehindTheProxy, args.slice(3));
|
|
25
25
|
} else {
|
|
@@ -27,7 +27,7 @@ if (desktopLaunch === null && appBehindTheProxy !== void 0) {
|
|
|
27
27
|
const stop = () => abort.abort();
|
|
28
28
|
if (!args[0]?.startsWith("--desktop")) for (const signal of ["SIGINT", "SIGTERM", "SIGHUP"]) process.on(signal, stop);
|
|
29
29
|
try {
|
|
30
|
-
const { codexDesktopCommand } = desktopLaunch ?? await import("../codex-desktop-launch-
|
|
30
|
+
const { codexDesktopCommand } = desktopLaunch ?? await import("../codex-desktop-launch-LRQ4LU64.js");
|
|
31
31
|
const desktop = await codexDesktopCommand(args, [process.execPath, ...process.execArgv, process.argv[1], "codex"], desktopAccount);
|
|
32
32
|
if (desktop !== null) process.exitCode = desktop;
|
|
33
33
|
else {
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
import {
|
|
16
16
|
HEARTBEAT_INTERVAL_MS,
|
|
17
17
|
sendHeartbeat
|
|
18
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-CMAB4KQG.js";
|
|
19
19
|
import "../chunk-6SWFS4GU.js";
|
|
20
20
|
import {
|
|
21
21
|
readSignedOutDiagnosis
|
|
@@ -60,7 +60,7 @@ import {
|
|
|
60
60
|
import "../chunk-NN43KGTN.js";
|
|
61
61
|
import {
|
|
62
62
|
startRegisteredTranscripts
|
|
63
|
-
} from "../chunk-
|
|
63
|
+
} from "../chunk-6WT5OIRM.js";
|
|
64
64
|
import "../chunk-VAE5JBR5.js";
|
|
65
65
|
import "../chunk-G66WIAST.js";
|
|
66
66
|
import "../chunk-43DT3QWZ.js";
|
|
@@ -81,7 +81,7 @@ import {
|
|
|
81
81
|
requestDaemonHandoff,
|
|
82
82
|
stopDaemonRunning,
|
|
83
83
|
writeDaemonNeedsLogin
|
|
84
|
-
} from "../chunk-
|
|
84
|
+
} from "../chunk-MD63J3T7.js";
|
|
85
85
|
import {
|
|
86
86
|
hookOwnerOf
|
|
87
87
|
} from "../chunk-TLK5YLIE.js";
|
|
@@ -2911,8 +2911,8 @@ import { join as join3 } from "path";
|
|
|
2911
2911
|
init_fsx();
|
|
2912
2912
|
init_paths();
|
|
2913
2913
|
import { createHash as createHash10 } from "crypto";
|
|
2914
|
-
import { lstatSync as lstatSync5, readFileSync as
|
|
2915
|
-
import { basename as
|
|
2914
|
+
import { lstatSync as lstatSync5, readFileSync as readFileSync19, readdirSync as readdirSync2, realpathSync as realpathSync4, statSync as statSync5, unlinkSync as unlinkSync5 } from "fs";
|
|
2915
|
+
import { basename as basename3, dirname as dirname9, isAbsolute, join as join20, relative, resolve as resolve3, sep } from "path";
|
|
2916
2916
|
|
|
2917
2917
|
// src/transcript-phone-trust.ts
|
|
2918
2918
|
import { createHash as createHash5 } from "crypto";
|
|
@@ -7623,8 +7623,8 @@ var hookOwnerOfCommands = (commands, appAvailable = true) => {
|
|
|
7623
7623
|
|
|
7624
7624
|
// src/daemon-lifecycle.ts
|
|
7625
7625
|
init_src();
|
|
7626
|
-
import { dirname as
|
|
7627
|
-
import { existsSync as existsSync6, mkdirSync as
|
|
7626
|
+
import { dirname as dirname8, join as join19, win32 as win32Path } from "path";
|
|
7627
|
+
import { existsSync as existsSync6, mkdirSync as mkdirSync7, readFileSync as readFileSync18, realpathSync as realpathSync3, renameSync as renameSync3, statSync as statSync4, unlinkSync as unlinkSync4, writeFileSync as writeFileSync5 } from "fs";
|
|
7628
7628
|
import { createHash as createHash9, randomUUID as randomUUID3 } from "crypto";
|
|
7629
7629
|
import { homedir as homedir8, uptime, userInfo } from "os";
|
|
7630
7630
|
|
|
@@ -7649,8 +7649,20 @@ import { win32 as win323 } from "path";
|
|
|
7649
7649
|
// src/daemon-lifecycle.ts
|
|
7650
7650
|
init_npm();
|
|
7651
7651
|
init_cli_package_name();
|
|
7652
|
-
init_global_package();
|
|
7653
7652
|
import { execFileSync as execFileSync3 } from "child_process";
|
|
7653
|
+
|
|
7654
|
+
// src/daemon-entry-guard.ts
|
|
7655
|
+
init_fsx();
|
|
7656
|
+
import { mkdirSync as mkdirSync6, readFileSync as readFileSync17 } from "fs";
|
|
7657
|
+
import { basename, dirname as dirname7, join as join18 } from "path";
|
|
7658
|
+
var DAEMON_ENTRY_GUARD_SOURCE = [
|
|
7659
|
+
"const { existsSync } = require('node:fs')",
|
|
7660
|
+
"if (process.argv[1] && !existsSync(process.argv[1])) process.exit(0)",
|
|
7661
|
+
""
|
|
7662
|
+
].join("\n");
|
|
7663
|
+
|
|
7664
|
+
// src/daemon-lifecycle.ts
|
|
7665
|
+
init_global_package();
|
|
7654
7666
|
var DAEMON_LEASE_RENEW_INTERVAL_MS = 3e4;
|
|
7655
7667
|
var LOCAL_LEASE_TIMEOUT_MS = DAEMON_LEASE_RENEW_INTERVAL_MS * 3;
|
|
7656
7668
|
var DAEMON_YIELD_CHECK_INTERVAL_MS = 2e3;
|
|
@@ -7701,7 +7713,7 @@ var firstString = (...values) => values.find((v) => typeof v === "string" && v.l
|
|
|
7701
7713
|
// ../hook-mapping/src/map.ts
|
|
7702
7714
|
init_src();
|
|
7703
7715
|
init_src();
|
|
7704
|
-
import { basename } from "path";
|
|
7716
|
+
import { basename as basename2 } from "path";
|
|
7705
7717
|
var AGENT_IDENTITIES = {
|
|
7706
7718
|
claude: { type: "claude_code", label: AGENT_LABELS_BY_TYPE.claude_code },
|
|
7707
7719
|
codex: { type: "codex", label: AGENT_LABELS_BY_TYPE.codex },
|
|
@@ -7824,18 +7836,18 @@ var storedRegistrationSchema = external_exports.object({
|
|
|
7824
7836
|
endedAt: external_exports.number().positive().optional(),
|
|
7825
7837
|
drained: external_exports.boolean().optional()
|
|
7826
7838
|
});
|
|
7827
|
-
var defaultRegistryDirectory = () => process.env.PUSHARY_TRANSCRIPT_REGISTRY_DIR ||
|
|
7839
|
+
var defaultRegistryDirectory = () => process.env.PUSHARY_TRANSCRIPT_REGISTRY_DIR || join20(pusharyDir(), "transcript-capture");
|
|
7828
7840
|
var cliRegistry = (apiKey = getApiKey()) => ({ apiKey, baseUrl: getBaseUrl(), directory: defaultRegistryDirectory() });
|
|
7829
7841
|
var accountFor = (registry) => createHash10("sha256").update(`${registry.baseUrl}\0${registry.apiKey}`).digest("hex");
|
|
7830
7842
|
var TTL = 48 * 60 * 60 * 1e3;
|
|
7831
7843
|
var read = (path) => {
|
|
7832
7844
|
if (statSync5(path).size > 16384) throw new Error("History registration exceeds its size limit");
|
|
7833
|
-
return storedRegistrationSchema.parse(JSON.parse(
|
|
7845
|
+
return storedRegistrationSchema.parse(JSON.parse(readFileSync19(path, "utf8")));
|
|
7834
7846
|
};
|
|
7835
7847
|
var consent = (record) => record.consentOverride ?? readTranscriptPreference() ?? true;
|
|
7836
7848
|
var withoutTrailingSlash = (url) => url.replace(/\/+$/, "");
|
|
7837
7849
|
var sameServer = (url, registry) => withoutTrailingSlash(url) === withoutTrailingSlash(registry.baseUrl);
|
|
7838
|
-
var fileFor3 = (registry, sessionId) =>
|
|
7850
|
+
var fileFor3 = (registry, sessionId) => join20(registry.directory, `${createHash10("sha256").update(accountFor(registry) + sessionId).digest("hex")}.json`);
|
|
7839
7851
|
var permitted = (registry, raw2) => raw2.account === accountFor(registry) && consent(raw2) && !raw2.drained && (raw2.source !== "claude" || !!raw2.expectedSiteId || !macOwnsClaudeHooks(raw2.cwd)) && (!raw2.expectedSiteId || raw2.expectedSiteId === raw2.verifiedSiteId && !!raw2.expectedBaseUrl && sameServer(raw2.expectedBaseUrl, registry));
|
|
7840
7852
|
var registeredTranscriptEnabled = (apiKey, sessionId, registry = cliRegistry(apiKey)) => {
|
|
7841
7853
|
try {
|
|
@@ -7845,12 +7857,12 @@ var registeredTranscriptEnabled = (apiKey, sessionId, registry = cliRegistry(api
|
|
|
7845
7857
|
}
|
|
7846
7858
|
};
|
|
7847
7859
|
var macOwnsClaudeHooks = (cwd) => [
|
|
7848
|
-
|
|
7849
|
-
|
|
7850
|
-
|
|
7860
|
+
join20(claudeConfigDir(), "settings.json"),
|
|
7861
|
+
join20(cwd, ".claude", "settings.json"),
|
|
7862
|
+
join20(cwd, ".claude", "settings.local.json")
|
|
7851
7863
|
].some((path) => {
|
|
7852
7864
|
try {
|
|
7853
|
-
return hookOwnerOf(JSON.parse(
|
|
7865
|
+
return hookOwnerOf(JSON.parse(readFileSync19(path, "utf8"))) === "app";
|
|
7854
7866
|
} catch {
|
|
7855
7867
|
return false;
|
|
7856
7868
|
}
|
|
@@ -7858,22 +7870,22 @@ var macOwnsClaudeHooks = (cwd) => [
|
|
|
7858
7870
|
var TRANSCRIPT_ROOT_NAME = { claude: "projects", codex: "sessions", gemini: "tmp", cursor: "projects", hermes: "hermes-history" };
|
|
7859
7871
|
var transcriptRoots = (source) => {
|
|
7860
7872
|
const home = homedir9();
|
|
7861
|
-
if (source === "codex") return [
|
|
7862
|
-
if (source === "cursor") return [
|
|
7863
|
-
if (source === "hermes") return [
|
|
7864
|
-
if (source === "gemini") return [
|
|
7873
|
+
if (source === "codex") return [join20(codexHome(), TRANSCRIPT_ROOT_NAME.codex)];
|
|
7874
|
+
if (source === "cursor") return [join20(home, ".cursor", TRANSCRIPT_ROOT_NAME.cursor)];
|
|
7875
|
+
if (source === "hermes") return [join20(home, ".pushary", TRANSCRIPT_ROOT_NAME.hermes)];
|
|
7876
|
+
if (source === "gemini") return [join20(process.env.GEMINI_CLI_HOME || home, ".gemini", "tmp"), join20(home, ".cache", ".gemini", "tmp")];
|
|
7865
7877
|
const configured = process.env.CLAUDE_CONFIG_DIR;
|
|
7866
|
-
return [
|
|
7878
|
+
return [join20(configured || join20(home, ".claude"), TRANSCRIPT_ROOT_NAME.claude), join20(home, ".claude", TRANSCRIPT_ROOT_NAME.claude)];
|
|
7867
7879
|
};
|
|
7868
|
-
var isAgentTranscriptRoot = (root, source) => isAbsolute(root) && resolve3(root) === root &&
|
|
7880
|
+
var isAgentTranscriptRoot = (root, source) => isAbsolute(root) && resolve3(root) === root && basename3(root) === TRANSCRIPT_ROOT_NAME[source];
|
|
7869
7881
|
var acceptedTranscriptRoots = (source, registeredRoot) => typeof registeredRoot === "string" && isAgentTranscriptRoot(registeredRoot, source) ? [...transcriptRoots(source), registeredRoot] : transcriptRoots(source);
|
|
7870
7882
|
var resolvedSourcePath = (path) => {
|
|
7871
7883
|
const absolute = resolve3(path);
|
|
7872
7884
|
try {
|
|
7873
7885
|
return realpathSync4(absolute);
|
|
7874
7886
|
} catch {
|
|
7875
|
-
const parent =
|
|
7876
|
-
return parent === absolute ? absolute :
|
|
7887
|
+
const parent = dirname9(absolute);
|
|
7888
|
+
return parent === absolute ? absolute : join20(resolvedSourcePath(parent), basename3(absolute));
|
|
7877
7889
|
}
|
|
7878
7890
|
};
|
|
7879
7891
|
var transcriptRootContaining = (candidate, roots) => {
|
|
@@ -7891,9 +7903,9 @@ var captureRegistration = (source, value, registeredRoot) => {
|
|
|
7891
7903
|
const root = transcriptRootContaining(path, acceptedTranscriptRoots(source, registeredRoot));
|
|
7892
7904
|
if (root === null) return null;
|
|
7893
7905
|
const segments = relative(root, path).split(sep);
|
|
7894
|
-
if (source === "hermes" && (segments.length !== 2 || !/^[a-f0-9]{64}$/.test(segments[0] ?? "") ||
|
|
7895
|
-
if (source === "gemini" && (segments.length !== 3 || segments[1] !== "chats" || !
|
|
7896
|
-
if (source === "cursor" && (segments[1] !== "agent-transcripts" ||
|
|
7906
|
+
if (source === "hermes" && (segments.length !== 2 || !/^[a-f0-9]{64}$/.test(segments[0] ?? "") || basename3(path) !== `${sessionId}.json`)) return null;
|
|
7907
|
+
if (source === "gemini" && (segments.length !== 3 || segments[1] !== "chats" || !basename3(path).startsWith("session-"))) return null;
|
|
7908
|
+
if (source === "cursor" && (segments[1] !== "agent-transcripts" || basename3(path) !== `${sessionId}.jsonl` || !(segments.length === 3 || segments.length === 4 && basename3(dirname9(path)) === sessionId))) return null;
|
|
7897
7909
|
return { sessionId, cwd: input.cwd, path, source, root };
|
|
7898
7910
|
};
|
|
7899
7911
|
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
readSetupFailure,
|
|
6
|
-
versionManagerOf
|
|
7
|
-
} from "../chunk-GACQSKNG.js";
|
|
3
|
+
readSetupFailure
|
|
4
|
+
} from "../chunk-B4UIRMOE.js";
|
|
8
5
|
import {
|
|
9
6
|
describeWaitLadder
|
|
10
7
|
} from "../chunk-CVWG2N3Y.js";
|
|
@@ -40,7 +37,7 @@ import {
|
|
|
40
37
|
import {
|
|
41
38
|
readMachineReadiness,
|
|
42
39
|
readManagedControlEvidence
|
|
43
|
-
} from "../chunk-
|
|
40
|
+
} from "../chunk-CMAB4KQG.js";
|
|
44
41
|
import {
|
|
45
42
|
assessCodexHookTrust,
|
|
46
43
|
readCodexTrustForPusharyHooks
|
|
@@ -144,11 +141,15 @@ import {
|
|
|
144
141
|
daemonHasRemoteProof,
|
|
145
142
|
daemonServiceManagerAvailable,
|
|
146
143
|
describeDaemonLoginBlock,
|
|
144
|
+
describeServiceNodeRisk,
|
|
147
145
|
hasDaemonServiceDefinition,
|
|
148
146
|
readDaemonNeedsLogin,
|
|
149
147
|
readDaemonStatus,
|
|
150
|
-
readInstalledDaemonService
|
|
151
|
-
|
|
148
|
+
readInstalledDaemonService,
|
|
149
|
+
readServiceExecPath,
|
|
150
|
+
serviceStartFileChecks,
|
|
151
|
+
versionManagerOf
|
|
152
|
+
} from "../chunk-MD63J3T7.js";
|
|
152
153
|
import {
|
|
153
154
|
GEMINI_HOOK_BINARY,
|
|
154
155
|
claudeOtherHolders,
|
|
@@ -1201,6 +1202,9 @@ var main = async () => {
|
|
|
1201
1202
|
"Remote-control service runtime",
|
|
1202
1203
|
present ? `${serviceNode}${manager ? ` (${describeServiceNodeRisk(manager)})` : ""}` : `${serviceNode} is gone${manager ? ` (${manager} switched Node since setup)` : ""}; run \`pushary daemon install\` to repin the service`
|
|
1203
1204
|
);
|
|
1205
|
+
for (const start of serviceStartFileChecks(serviceFile.contents, process.platform, existsSync)) {
|
|
1206
|
+
check(start.passed, start.label, start.detail);
|
|
1207
|
+
}
|
|
1204
1208
|
} else if (serviceFile) {
|
|
1205
1209
|
console.log(` ${warn} Remote-control service runtime ${dim(`(could not read the node path out of ${serviceFile.path})`)}`);
|
|
1206
1210
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
readHookInput
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-7XD56GXA.js";
|
|
5
5
|
import "../chunk-NN43KGTN.js";
|
|
6
6
|
import {
|
|
7
7
|
announceSubscriptionRequired,
|
|
8
8
|
isDeferAnswer
|
|
9
9
|
} from "../chunk-H2RE3IPK.js";
|
|
10
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-6WT5OIRM.js";
|
|
11
11
|
import "../chunk-VAE5JBR5.js";
|
|
12
12
|
import "../chunk-G66WIAST.js";
|
|
13
13
|
import "../chunk-43DT3QWZ.js";
|
|
14
|
-
import "../chunk-
|
|
14
|
+
import "../chunk-MD63J3T7.js";
|
|
15
15
|
import "../chunk-TLK5YLIE.js";
|
|
16
16
|
import "../chunk-D7AAAD6W.js";
|
|
17
17
|
import "../chunk-A2YJ2FBR.js";
|
|
@@ -16,17 +16,17 @@ import {
|
|
|
16
16
|
} from "../chunk-ICCM3DLT.js";
|
|
17
17
|
import {
|
|
18
18
|
readHookInput
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-7XD56GXA.js";
|
|
20
20
|
import "../chunk-NN43KGTN.js";
|
|
21
21
|
import {
|
|
22
22
|
announceSubscriptionRequired,
|
|
23
23
|
isDeferAnswer
|
|
24
24
|
} from "../chunk-H2RE3IPK.js";
|
|
25
|
-
import "../chunk-
|
|
25
|
+
import "../chunk-6WT5OIRM.js";
|
|
26
26
|
import "../chunk-VAE5JBR5.js";
|
|
27
27
|
import "../chunk-G66WIAST.js";
|
|
28
28
|
import "../chunk-43DT3QWZ.js";
|
|
29
|
-
import "../chunk-
|
|
29
|
+
import "../chunk-MD63J3T7.js";
|
|
30
30
|
import "../chunk-TLK5YLIE.js";
|
|
31
31
|
import {
|
|
32
32
|
DEFAULT_SESSION,
|
package/dist/bin/pushary-hook.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handlePreToolUse
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-R6N6FREL.js";
|
|
5
5
|
import "../chunk-UP5QXEUU.js";
|
|
6
6
|
import "../chunk-G73ACPR2.js";
|
|
7
7
|
import {
|
|
@@ -12,10 +12,10 @@ import "../chunk-HY4ATVCT.js";
|
|
|
12
12
|
import "../chunk-YQQGIDBC.js";
|
|
13
13
|
import {
|
|
14
14
|
readToolHookCall
|
|
15
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-7XD56GXA.js";
|
|
16
16
|
import "../chunk-NN43KGTN.js";
|
|
17
17
|
import "../chunk-H2RE3IPK.js";
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-6WT5OIRM.js";
|
|
19
19
|
import "../chunk-VAE5JBR5.js";
|
|
20
20
|
import "../chunk-G66WIAST.js";
|
|
21
21
|
import {
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
normalizeToolCall,
|
|
24
24
|
profileFromArgv
|
|
25
25
|
} from "../chunk-43DT3QWZ.js";
|
|
26
|
-
import "../chunk-
|
|
26
|
+
import "../chunk-MD63J3T7.js";
|
|
27
27
|
import "../chunk-TLK5YLIE.js";
|
|
28
28
|
import "../chunk-D7AAAD6W.js";
|
|
29
29
|
import {
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
readHookInput
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-7XD56GXA.js";
|
|
5
5
|
import "../chunk-NN43KGTN.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-6WT5OIRM.js";
|
|
7
7
|
import "../chunk-VAE5JBR5.js";
|
|
8
8
|
import "../chunk-G66WIAST.js";
|
|
9
9
|
import {
|
|
10
10
|
activeHookSource,
|
|
11
11
|
activeIdentity
|
|
12
12
|
} from "../chunk-43DT3QWZ.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-MD63J3T7.js";
|
|
14
14
|
import "../chunk-TLK5YLIE.js";
|
|
15
15
|
import {
|
|
16
16
|
handleNotification
|
|
@@ -13,17 +13,17 @@ import {
|
|
|
13
13
|
} from "../chunk-YQQGIDBC.js";
|
|
14
14
|
import {
|
|
15
15
|
readHookInput
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-7XD56GXA.js";
|
|
17
17
|
import "../chunk-NN43KGTN.js";
|
|
18
18
|
import {
|
|
19
19
|
announceSubscriptionRequired,
|
|
20
20
|
isDeferAnswer
|
|
21
21
|
} from "../chunk-H2RE3IPK.js";
|
|
22
|
-
import "../chunk-
|
|
22
|
+
import "../chunk-6WT5OIRM.js";
|
|
23
23
|
import "../chunk-VAE5JBR5.js";
|
|
24
24
|
import "../chunk-G66WIAST.js";
|
|
25
25
|
import "../chunk-43DT3QWZ.js";
|
|
26
|
-
import "../chunk-
|
|
26
|
+
import "../chunk-MD63J3T7.js";
|
|
27
27
|
import "../chunk-TLK5YLIE.js";
|
|
28
28
|
import {
|
|
29
29
|
DEFAULT_SESSION,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handlePermissionDenied
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-R6N6FREL.js";
|
|
5
5
|
import "../chunk-UP5QXEUU.js";
|
|
6
6
|
import "../chunk-G73ACPR2.js";
|
|
7
7
|
import {
|
|
@@ -12,14 +12,14 @@ import "../chunk-HY4ATVCT.js";
|
|
|
12
12
|
import "../chunk-YQQGIDBC.js";
|
|
13
13
|
import {
|
|
14
14
|
readHookInput
|
|
15
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-7XD56GXA.js";
|
|
16
16
|
import "../chunk-NN43KGTN.js";
|
|
17
17
|
import "../chunk-H2RE3IPK.js";
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-6WT5OIRM.js";
|
|
19
19
|
import "../chunk-VAE5JBR5.js";
|
|
20
20
|
import "../chunk-G66WIAST.js";
|
|
21
21
|
import "../chunk-43DT3QWZ.js";
|
|
22
|
-
import "../chunk-
|
|
22
|
+
import "../chunk-MD63J3T7.js";
|
|
23
23
|
import "../chunk-TLK5YLIE.js";
|
|
24
24
|
import "../chunk-D7AAAD6W.js";
|
|
25
25
|
import "../chunk-A2YJ2FBR.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handlePermissionRequest
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-R6N6FREL.js";
|
|
5
5
|
import "../chunk-UP5QXEUU.js";
|
|
6
6
|
import "../chunk-G73ACPR2.js";
|
|
7
7
|
import {
|
|
@@ -12,10 +12,10 @@ import "../chunk-HY4ATVCT.js";
|
|
|
12
12
|
import "../chunk-YQQGIDBC.js";
|
|
13
13
|
import {
|
|
14
14
|
readToolHookInput
|
|
15
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-7XD56GXA.js";
|
|
16
16
|
import "../chunk-NN43KGTN.js";
|
|
17
17
|
import "../chunk-H2RE3IPK.js";
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-6WT5OIRM.js";
|
|
19
19
|
import "../chunk-VAE5JBR5.js";
|
|
20
20
|
import "../chunk-G66WIAST.js";
|
|
21
21
|
import {
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
permissionRequestAsPreToolUseSeesIt,
|
|
25
25
|
profileFromArgv
|
|
26
26
|
} from "../chunk-43DT3QWZ.js";
|
|
27
|
-
import "../chunk-
|
|
27
|
+
import "../chunk-MD63J3T7.js";
|
|
28
28
|
import "../chunk-TLK5YLIE.js";
|
|
29
29
|
import "../chunk-D7AAAD6W.js";
|
|
30
30
|
import {
|
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
} from "../chunk-UP5QXEUU.js";
|
|
5
5
|
import {
|
|
6
6
|
readHookInput
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-7XD56GXA.js";
|
|
8
8
|
import "../chunk-NN43KGTN.js";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-6WT5OIRM.js";
|
|
10
10
|
import "../chunk-VAE5JBR5.js";
|
|
11
11
|
import "../chunk-G66WIAST.js";
|
|
12
12
|
import {
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
normalizeToolCall,
|
|
16
16
|
profileFromArgv
|
|
17
17
|
} from "../chunk-43DT3QWZ.js";
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-MD63J3T7.js";
|
|
19
19
|
import "../chunk-TLK5YLIE.js";
|
|
20
20
|
import {
|
|
21
21
|
emitHookOutput,
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
readHookInput
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-7XD56GXA.js";
|
|
5
5
|
import "../chunk-NN43KGTN.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-6WT5OIRM.js";
|
|
7
7
|
import "../chunk-VAE5JBR5.js";
|
|
8
8
|
import "../chunk-G66WIAST.js";
|
|
9
9
|
import {
|
|
10
10
|
activeHookSource,
|
|
11
11
|
activeIdentity
|
|
12
12
|
} from "../chunk-43DT3QWZ.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-MD63J3T7.js";
|
|
14
14
|
import "../chunk-TLK5YLIE.js";
|
|
15
15
|
import {
|
|
16
16
|
emitHookOutput,
|
|
@@ -5,16 +5,16 @@ import {
|
|
|
5
5
|
import "../chunk-CYTPQDQY.js";
|
|
6
6
|
import {
|
|
7
7
|
readHookInput
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-7XD56GXA.js";
|
|
9
9
|
import "../chunk-NN43KGTN.js";
|
|
10
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-6WT5OIRM.js";
|
|
11
11
|
import "../chunk-VAE5JBR5.js";
|
|
12
12
|
import "../chunk-G66WIAST.js";
|
|
13
13
|
import {
|
|
14
14
|
activeHookSource,
|
|
15
15
|
activeIdentity
|
|
16
16
|
} from "../chunk-43DT3QWZ.js";
|
|
17
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-MD63J3T7.js";
|
|
18
18
|
import "../chunk-TLK5YLIE.js";
|
|
19
19
|
import {
|
|
20
20
|
handleSessionEnd
|
|
@@ -15,16 +15,16 @@ import {
|
|
|
15
15
|
} from "../chunk-ICCM3DLT.js";
|
|
16
16
|
import {
|
|
17
17
|
readHookInput
|
|
18
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-7XD56GXA.js";
|
|
19
19
|
import "../chunk-NN43KGTN.js";
|
|
20
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-6WT5OIRM.js";
|
|
21
21
|
import "../chunk-VAE5JBR5.js";
|
|
22
22
|
import "../chunk-G66WIAST.js";
|
|
23
23
|
import {
|
|
24
24
|
activeHookSource,
|
|
25
25
|
activeIdentity
|
|
26
26
|
} from "../chunk-43DT3QWZ.js";
|
|
27
|
-
import "../chunk-
|
|
27
|
+
import "../chunk-MD63J3T7.js";
|
|
28
28
|
import "../chunk-TLK5YLIE.js";
|
|
29
29
|
import {
|
|
30
30
|
CLAUDE_CODE_AGENT,
|