pushary 1.9.97 → 1.9.99
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 +19 -0
- package/dist/{api-WH3DLHJB.js → api-UGCOLWF4.js} +10 -10
- package/dist/bin/pushary-bell-hook.js +27 -26
- package/dist/bin/pushary-bell.js +10 -10
- package/dist/bin/pushary-claude.js +48 -33
- package/dist/bin/pushary-clean.js +34 -34
- package/dist/bin/pushary-codex-bridge.js +21 -21
- package/dist/bin/pushary-codex-hook.js +32 -31
- package/dist/bin/pushary-codex-session.js +8 -8
- package/dist/bin/pushary-codex.js +14 -14
- package/dist/bin/pushary-connect.js +27 -27
- package/dist/bin/pushary-cowork.js +5 -5
- package/dist/bin/pushary-daemon.js +40 -39
- package/dist/bin/pushary-disconnect.js +26 -26
- package/dist/bin/pushary-display-hook.js +18 -17
- package/dist/bin/pushary-doctor.js +42 -42
- package/dist/bin/pushary-elicitation-hook.js +27 -26
- package/dist/bin/pushary-gemini-bridge.js +15 -15
- package/dist/bin/pushary-gemini-hook.js +29 -28
- package/dist/bin/pushary-hook.js +31 -30
- package/dist/bin/pushary-login.js +38 -20
- package/dist/bin/pushary-logout.js +25 -25
- package/dist/bin/pushary-mcp.js +11 -11
- package/dist/bin/pushary-mode.js +15 -15
- package/dist/bin/pushary-notification-hook.js +26 -25
- package/dist/bin/pushary-opencode-hook.js +28 -27
- package/dist/bin/pushary-permission-denied-hook.js +31 -30
- package/dist/bin/pushary-permission-hook.js +31 -30
- package/dist/bin/pushary-post-hook.js +26 -25
- package/dist/bin/pushary-prompt-hook.js +26 -25
- package/dist/bin/pushary-session-end-hook.js +28 -27
- package/dist/bin/pushary-session-start-hook.js +36 -35
- package/dist/bin/pushary-setup.js +103 -109
- package/dist/bin/pushary-stats.js +5 -5
- package/dist/bin/pushary-status.js +32 -32
- package/dist/bin/pushary-stop-hook.js +26 -25
- package/dist/bin/pushary-stopfailure-hook.js +26 -25
- package/dist/bin/pushary-suggestions.js +15 -15
- package/dist/bin/pushary-transcript-register.js +19 -18
- package/dist/bin/pushary-transcripts.js +27 -26
- package/dist/bin/pushary-upgrade.js +40 -40
- package/dist/bin/pushary-wait.js +15 -15
- package/dist/bin/pushary.js +7 -7
- package/dist/{chunk-UAUADSJX.js → chunk-2CO34UJK.js} +2 -2
- package/dist/{chunk-R7D3PH2M.js → chunk-2DKM45TQ.js} +6 -6
- package/dist/{chunk-IFQKSIID.js → chunk-35Q2Z7HD.js} +3 -3
- package/dist/{chunk-32577NGL.js → chunk-3NS3YK5S.js} +1 -1
- package/dist/{chunk-CMDIKFVL.js → chunk-3QTUISNT.js} +1 -1
- package/dist/{chunk-Z6O6CDTP.js → chunk-3VWS2EAB.js} +5 -5
- package/dist/{chunk-JA6GCOW2.js → chunk-4CD75FOI.js} +7 -7
- package/dist/{chunk-5OLBO5EB.js → chunk-4OG7AYQN.js} +1 -1
- package/dist/{chunk-KYX7VBEE.js → chunk-54476CMC.js} +2 -2
- package/dist/chunk-56MGFZDM.js +45 -0
- package/dist/{chunk-RILJLDKG.js → chunk-5UKWIMMW.js} +5 -5
- package/dist/{chunk-TSSV3NBD.js → chunk-73WH2KOH.js} +2 -2
- package/dist/{chunk-2ZAFA3XI.js → chunk-7C5M5NY3.js} +3 -3
- package/dist/{chunk-6CDA4R5L.js → chunk-7DJWJWRS.js} +3 -3
- package/dist/{chunk-5U63KUP3.js → chunk-AP2VXDQB.js} +1 -1
- package/dist/{chunk-RSITUL2U.js → chunk-AWO5VRPH.js} +2 -2
- package/dist/{chunk-APFQBVQW.js → chunk-BFA36PR4.js} +6 -6
- package/dist/{chunk-W5IW7NZE.js → chunk-BSG7IIMK.js} +104 -2
- package/dist/{chunk-HD7AURL6.js → chunk-BYGU5IV4.js} +52 -7
- package/dist/{chunk-CP72YEEA.js → chunk-E7WAVZNC.js} +1 -1
- package/dist/{chunk-WOFHN2IZ.js → chunk-EBGUGOS3.js} +200 -12
- package/dist/{chunk-MGYGWHG5.js → chunk-EIREGHP2.js} +1 -1
- package/dist/{chunk-OBB6VTSG.js → chunk-EJ7DI2HX.js} +5 -5
- package/dist/{chunk-ZFUSWR2P.js → chunk-EXDEE4KB.js} +2 -2
- package/dist/{chunk-EAJT6RYP.js → chunk-EXUGDNCF.js} +7 -7
- package/dist/{chunk-RRA6POT5.js → chunk-FRAXLEC2.js} +1 -1
- package/dist/{chunk-5WYXFKZV.js → chunk-FSQXIJYX.js} +1 -1
- package/dist/{chunk-T35RHO3X.js → chunk-G24MYZIR.js} +5 -5
- package/dist/{chunk-VPT3RDTO.js → chunk-G66WIAST.js} +0 -43
- package/dist/{chunk-LKDAMWTZ.js → chunk-GJ7CPXXB.js} +4 -4
- package/dist/{chunk-GNFUPHPZ.js → chunk-GKRGH3SF.js} +10 -10
- package/dist/{chunk-TZE2S3XP.js → chunk-GNW6AHGY.js} +3 -3
- package/dist/{chunk-ORVMA5KJ.js → chunk-GOHFQONY.js} +3 -3
- package/dist/{chunk-R7TVELKF.js → chunk-HF24RY6N.js} +1 -1
- package/dist/{chunk-KZTN6OXM.js → chunk-HVQSHNVK.js} +6 -6
- package/dist/{chunk-QCEY7TSX.js → chunk-IBHSZUXM.js} +3 -3
- package/dist/{chunk-OW4WEO56.js → chunk-IOMU3A6E.js} +3 -3
- package/dist/{chunk-HXUE6IIP.js → chunk-JATIKUQ5.js} +5 -5
- package/dist/{chunk-W3OTAHLV.js → chunk-JE6UEOMG.js} +4 -4
- package/dist/{chunk-VVHNHETX.js → chunk-KLLX5ZTC.js} +2 -2
- package/dist/{chunk-KNVTKFDP.js → chunk-KRQKPVHG.js} +2 -2
- package/dist/{chunk-RZD7ULBJ.js → chunk-L6Q5FZ54.js} +1 -1
- package/dist/{chunk-QP3OSLKU.js → chunk-LM2YX5SO.js} +5 -5
- package/dist/{chunk-NTCVGJFC.js → chunk-LN53RAXQ.js} +4 -4
- package/dist/{chunk-5RNZP53C.js → chunk-MCZF73KL.js} +6 -6
- package/dist/{chunk-HWEEBVS7.js → chunk-MLFZ4F2L.js} +4 -4
- package/dist/{chunk-CG3C2WL7.js → chunk-N4SM5GMN.js} +14 -12
- package/dist/{chunk-VHOGSWUF.js → chunk-NDOQN5VC.js} +3 -3
- package/dist/{chunk-IED5CTYP.js → chunk-NTAVA4LB.js} +3 -3
- package/dist/{chunk-TKOL7DJH.js → chunk-OBIXCQPF.js} +2 -2
- package/dist/{chunk-VVP4CP4O.js → chunk-OLA7MWVD.js} +11 -10
- package/dist/{chunk-CB2RYMAO.js → chunk-P7SBX7QQ.js} +1 -1
- package/dist/{chunk-X22LLKBY.js → chunk-PDC4UQUC.js} +3 -3
- package/dist/{chunk-NI3NSURQ.js → chunk-PED2VA34.js} +1 -1
- package/dist/{chunk-FZQSUS3R.js → chunk-PT43DN4J.js} +14 -14
- package/dist/{chunk-GN2L5CYF.js → chunk-PVERXZOS.js} +1 -1
- package/dist/{chunk-E5WUBHVH.js → chunk-QTFN3ND3.js} +4 -4
- package/dist/{chunk-4D4USO5K.js → chunk-RB4E2YHR.js} +6 -6
- package/dist/{chunk-5YRDZE5F.js → chunk-SYMYZNSB.js} +1 -1
- package/dist/{chunk-SXX47FHL.js → chunk-T3HCMKX4.js} +2 -2
- package/dist/{chunk-RPY5XCGA.js → chunk-T7YK7FNA.js} +2 -2
- package/dist/{chunk-GEA6ZV2P.js → chunk-TBE76OH7.js} +2 -2
- package/dist/{chunk-ZDIQPYM2.js → chunk-TMRJOWWU.js} +1 -1
- package/dist/{chunk-JR6FCHAQ.js → chunk-U4MEORPA.js} +3 -3
- package/dist/{chunk-MYKZPTAL.js → chunk-UKX7IMD2.js} +1 -1
- package/dist/{chunk-6RGQIKAC.js → chunk-UMRO47H3.js} +3 -3
- package/dist/{chunk-AUZITE2H.js → chunk-VSKHU5XR.js} +6 -6
- package/dist/{chunk-MFJFN4DA.js → chunk-VWGZZSJG.js} +3 -3
- package/dist/{chunk-NDJ7H2WF.js → chunk-YIPSSNTL.js} +1 -1
- package/dist/{chunk-5WOO44TA.js → chunk-YLBUBQEL.js} +5 -5
- package/dist/{chunk-VAY5AJ6N.js → chunk-ZP7R762D.js} +4 -4
- package/dist/{codex-app-cards-switch-DFZK6GPW.js → codex-app-cards-switch-XMHI5UNS.js} +11 -11
- package/dist/{codex-desktop-launch-7QGN7SL7.js → codex-desktop-launch-QSD3X65K.js} +1 -1
- package/dist/{codex-session-launch-OWMNCYAH.js → codex-session-launch-TKDH5MHT.js} +18 -18
- package/dist/{config-ITPE5M6M.js → config-R3P7U2TH.js} +3 -3
- package/dist/{global-upgrade-PYEFLMJA.js → global-upgrade-SYF6JI7C.js} +10 -10
- package/dist/{identity-WTYTOLG3.js → identity-VH233LC3.js} +4 -4
- package/dist/{live-capabilities-HZ42KLZS.js → live-capabilities-THIEYKPD.js} +5 -5
- package/dist/{paths-6JUJIM74.js → paths-UA5EZQAH.js} +3 -3
- package/dist/{reapply-5WV6IS5V.js → reapply-QDTONXI3.js} +28 -28
- package/dist/src/index.js +30 -29
- package/dist/{upgrade-lock-ENAQL63D.js → upgrade-lock-GHMTQ3JP.js} +4 -4
- package/dist/{usage-BO7LGOA3.js → usage-E3M5YPYW.js} +3 -3
- package/package.json +1 -1
|
@@ -205,6 +205,18 @@ var CLAUDE_CONNECTOR_STEPS = [
|
|
|
205
205
|
];
|
|
206
206
|
var CONNECTOR_SETUP_QUESTION = "Did this setup question reach you?";
|
|
207
207
|
var CLAUDE_CONNECTOR_TEST = `Use Pushary ask_user to ask \u201C${CONNECTOR_SETUP_QUESTION}\u201D with type \u201Cconfirm\u201D. Use agentName \u201CClaude Cowork - Setup check\u201D in Cowork or \u201CClaude Chat - Setup check\u201D in Chat. Wait for my answer and tell me which answer you received. Do not run a command or change any files.`;
|
|
208
|
+
var connectorStarterPrompt = (agentNameRule) => `I\u2019m stepping away. Reach me on my phone with Pushary while you work on the task at the end of this message.
|
|
209
|
+
|
|
210
|
+
Before you start, use Pushary ask_user with type \u201Cselect\u201D to ask me the one choice that most changes the result. Give two to four options, put your recommendation first, and wait for my answer. Ask it even if you already have a recommendation. If I did not write a task, use ask_user with type \u201Cinput\u201D to ask me for one instead.
|
|
211
|
+
|
|
212
|
+
While you work, ask me with ask_user before you send, buy or delete anything, and wait for my answer. Silence is not a yes.
|
|
213
|
+
|
|
214
|
+
When you finish, send me a short note with send_notification and context.type \u201Ctask_complete\u201D.
|
|
215
|
+
|
|
216
|
+
${agentNameRule}
|
|
217
|
+
|
|
218
|
+
My task:`;
|
|
219
|
+
var CLAUDE_CONNECTOR_STARTER = connectorStarterPrompt("Use agentName \u201CClaude Cowork - <task name>\u201D in Cowork or \u201CClaude Chat - <task name>\u201D in Chat.");
|
|
208
220
|
var COWORK_STANDING_INSTRUCTIONS = `Pushary is connected as a connector. Use it proactively to reach me on my phone or Mac notch.
|
|
209
221
|
|
|
210
222
|
- When you need a decision or clarifying answer, call ask_user. Use type "confirm", "select", or "input" as appropriate. Ask once on one channel.
|
|
@@ -2902,6 +2914,7 @@ var shellCommandStringOf = (shell, args) => {
|
|
|
2902
2914
|
|
|
2903
2915
|
// ../contracts/src/chatgpt-plugin.ts
|
|
2904
2916
|
var CHATGPT_CONNECTOR_TEST = `@Pushary use ask_user to ask \u201C${CONNECTOR_SETUP_QUESTION}\u201D with type \u201Cconfirm\u201D and agentName \u201CChatGPT - Setup check\u201D. Wait for my answer and tell me which answer you received.`;
|
|
2917
|
+
var CHATGPT_CONNECTOR_STARTER = `@Pushary ${connectorStarterPrompt("Use agentName \u201CChatGPT - <task name>\u201D.")}`;
|
|
2905
2918
|
|
|
2906
2919
|
// ../contracts/src/partner-developer-guide.ts
|
|
2907
2920
|
var PARTNER_API_KEYS_URL = "https://pushary.com/dashboard/agent/settings";
|
|
@@ -4641,7 +4654,26 @@ var easCommandPublishes = (invocation) => {
|
|
|
4641
4654
|
const words = wordsOfInvocation(invocation);
|
|
4642
4655
|
return words.some((word, index) => EAS_PROGRAM.test(basenameOf(word.text)) && EAS_COMMANDS_THAT_PUBLISH.test(words[index + 1]?.text ?? ""));
|
|
4643
4656
|
};
|
|
4644
|
-
var
|
|
4657
|
+
var XCRUN = "xcrun";
|
|
4658
|
+
var ALTOOL = "altool";
|
|
4659
|
+
var NOTARYTOOL = "notarytool";
|
|
4660
|
+
var APPLE_UPLOAD_TOOLS = /* @__PURE__ */ new Set([ALTOOL, NOTARYTOOL]);
|
|
4661
|
+
var ALTOOL_UPLOAD_FLAG = /^--(?:upload-app|upload-package|notarize-app)$/;
|
|
4662
|
+
var NOTARYTOOL_SUBMIT = "submit";
|
|
4663
|
+
var appleUploadToolOf = ({ program, args }) => {
|
|
4664
|
+
if (program === void 0) return [];
|
|
4665
|
+
const name = basenameOf(program.text);
|
|
4666
|
+
if (APPLE_UPLOAD_TOOLS.has(name)) return [program, ...args];
|
|
4667
|
+
if (name !== XCRUN) return [];
|
|
4668
|
+
const tool = args.findIndex((arg) => APPLE_UPLOAD_TOOLS.has(basenameOf(arg.text)));
|
|
4669
|
+
return tool === -1 ? [] : args.slice(tool);
|
|
4670
|
+
};
|
|
4671
|
+
var uploadsABuildToApple = (invocation) => {
|
|
4672
|
+
const [tool, ...rest] = appleUploadToolOf(invocation);
|
|
4673
|
+
if (tool === void 0) return false;
|
|
4674
|
+
return basenameOf(tool.text) === ALTOOL ? rest.some((arg) => ALTOOL_UPLOAD_FLAG.test(arg.text)) : rest.find((arg) => !FLAG.test(arg.text))?.text === NOTARYTOOL_SUBMIT;
|
|
4675
|
+
};
|
|
4676
|
+
var publishesAnAppBuild = (invocation) => invocation.args.some((arg) => SUBMITS_THE_BUILD_TO_A_STORE.test(arg.text)) || easCommandPublishes(invocation) || uploadsABuildToApple(invocation);
|
|
4645
4677
|
var PUSHES_EVERY_TAG = /* @__PURE__ */ new Set(["--tags", "--follow-tags"]);
|
|
4646
4678
|
var NAMES_A_TAG = /(?:^|:)\+?refs\/tags\/|^tag$|(?:^|:)v?\d+(?:\.\d+){1,3}$|(?:^|:)v?\d+\.\d+\.\d+[-+][\w.]+$|\/v\d+\.\d+\.\d+(?:\.\d+)?(?:[-+][\w.]+)?$|^v\$/;
|
|
4647
4679
|
var TAG_HELD_IN_A_VARIABLE = /^v?\$\{?(?:\w+_)?(?:tag|version)(?:_name)?\}?$/i;
|
|
@@ -4689,6 +4721,10 @@ var FILE_THE_MACHINE_RUNS_LATER = new RegExp(String.raw`^(?:${[
|
|
|
4689
4721
|
String.raw`\$profile(?:\.\w+)?`,
|
|
4690
4722
|
String.raw`/(?:private/)?etc/.+`
|
|
4691
4723
|
].join("|")})$`, "i");
|
|
4724
|
+
var FILE_A_PROJECT_TOOL_RUNS_LATER = /^(?:.*\/)?(?:\.husky\/.+|\.envrc|\.vscode\/tasks\.json)$/i;
|
|
4725
|
+
var LINE_TERMINATOR = /[\n\r\u2028\u2029]/;
|
|
4726
|
+
var CREDENTIAL_FILE_IN_THE_HOME_FOLDER = new RegExp(String.raw`^${HOME_DIRECTORY}/(?:\.npmrc|[._]netrc|\.kube/config)$`, "i");
|
|
4727
|
+
var AGENT_INSTRUCTION_FILE = /(?:^|\/)(?:CLAUDE(?:\.local)?\.md|AGENTS(?:\.override)?\.md|\.claude\/(?:commands|agents)\/.+)$/i;
|
|
4692
4728
|
var withoutDotSegments = (path) => {
|
|
4693
4729
|
const kept = [];
|
|
4694
4730
|
for (const segment of path.split("/")) {
|
|
@@ -4697,9 +4733,10 @@ var withoutDotSegments = (path) => {
|
|
|
4697
4733
|
}
|
|
4698
4734
|
return `${path.startsWith("/") ? "/" : ""}${kept.join("/")}`;
|
|
4699
4735
|
};
|
|
4736
|
+
var namesAFileAToolOrAnAgentReadsLater = (path) => !LINE_TERMINATOR.test(path) && (FILE_A_PROJECT_TOOL_RUNS_LATER.test(path) || AGENT_INSTRUCTION_FILE.test(path));
|
|
4700
4737
|
var pathNeedsAPersonToChange = (path) => {
|
|
4701
4738
|
const written = withoutDotSegments(normalizeSeparators(path));
|
|
4702
|
-
return SECRET_FILE_NAME.test(basenameOf(written)) || CI_WORKFLOW_FILE.test(written) || AGENT_SETTINGS_FILE.test(written) || FILE_THE_MACHINE_RUNS_LATER.test(written);
|
|
4739
|
+
return SECRET_FILE_NAME.test(basenameOf(written)) || CI_WORKFLOW_FILE.test(written) || AGENT_SETTINGS_FILE.test(written) || FILE_THE_MACHINE_RUNS_LATER.test(written) || CREDENTIAL_FILE_IN_THE_HOME_FOLDER.test(written) || namesAFileAToolOrAnAgentReadsLater(written);
|
|
4703
4740
|
};
|
|
4704
4741
|
var REDIRECTS_INTO_A_SECRET_FILE = />>?\s*(?:[^\s;|&<>]*\/)?\.env(?:\.[\w-]+)?(?=$|[\s;|&)])/;
|
|
4705
4742
|
var COPIES_ONTO_ITS_LAST_OPERAND = /* @__PURE__ */ new Set(["cp", "install", "ln", "rsync", "scp"]);
|
|
@@ -4761,7 +4798,9 @@ var FOLDER_THAT_NEEDS_A_PERSON = new RegExp(String.raw`(?:^|/)(?:${[
|
|
|
4761
4798
|
String.raw`\.git/hooks`,
|
|
4762
4799
|
String.raw`\.ssh`,
|
|
4763
4800
|
String.raw`\.config/opencode(?:/plugins?)?`,
|
|
4764
|
-
String.raw`Library/Launch(?:Agents|Daemons)
|
|
4801
|
+
String.raw`Library/Launch(?:Agents|Daemons)`,
|
|
4802
|
+
String.raw`\.husky`,
|
|
4803
|
+
String.raw`\.claude/(?:commands|agents)`
|
|
4765
4804
|
].join("|")})$`, "i");
|
|
4766
4805
|
var folderNeedsAPersonToChange = (path) => FOLDER_THAT_NEEDS_A_PERSON.test(withoutDotSegments(normalizeSeparators(path)));
|
|
4767
4806
|
var NETWORK_SENDERS = /* @__PURE__ */ new Set([
|
|
@@ -4844,14 +4883,56 @@ var NAMES_A_KNOWN_CREDENTIAL_HELPER = /^(?:osxkeychain|store|cache|manager|manag
|
|
|
4844
4883
|
var namesNoNewProgram = (setting, value) => !value.expands && !GIT_INCLUDE_SETTING.test(setting) && (SWITCHES_A_SETTING_ON_OR_OFF.test(value.text) || GIT_CREDENTIAL_HELPER_SETTING.test(setting) && NAMES_A_KNOWN_CREDENTIAL_HELPER.test(value.text));
|
|
4845
4884
|
var GIT_SETTING_THAT_RUNS_A_COMMAND_AFTER_A_BANG = /^(?:alias\..+|submodule\..+\.update)$/i;
|
|
4846
4885
|
var RUNS_A_SHELL_COMMAND = /^!/;
|
|
4847
|
-
var
|
|
4848
|
-
|
|
4886
|
+
var GIT_CONFIG_READ_OPTIONS = /* @__PURE__ */ new Set([
|
|
4887
|
+
"--get",
|
|
4888
|
+
"--get-all",
|
|
4889
|
+
"--get-regexp",
|
|
4890
|
+
"--get-urlmatch",
|
|
4891
|
+
"--get-color",
|
|
4892
|
+
"--get-colorbool",
|
|
4893
|
+
"--list",
|
|
4894
|
+
"-l"
|
|
4895
|
+
]);
|
|
4896
|
+
var GIT_CONFIG_READ_SUBCOMMANDS = /* @__PURE__ */ new Set(["get", "list"]);
|
|
4897
|
+
var GIT_CONFIG_OPTIONS_WITH_A_VALUE = /* @__PURE__ */ new Set(["--comment", "--file", "-f", "--blob", "--type", "--default"]);
|
|
4898
|
+
var gitConfigOnlyReads = (args) => {
|
|
4899
|
+
let firstOperand;
|
|
4900
|
+
for (let index = args.findIndex((arg) => arg.text === GIT_CONFIG_SUBCOMMAND) + 1; index < args.length; index++) {
|
|
4901
|
+
const text3 = args[index]?.text ?? "";
|
|
4902
|
+
if (!FLAG.test(text3)) firstOperand ??= text3;
|
|
4903
|
+
else if (GIT_CONFIG_READ_OPTIONS.has(text3)) return true;
|
|
4904
|
+
else if (GIT_CONFIG_OPTIONS_WITH_A_VALUE.has(text3)) index++;
|
|
4905
|
+
}
|
|
4906
|
+
return GIT_CONFIG_READ_SUBCOMMANDS.has(firstOperand ?? "");
|
|
4907
|
+
};
|
|
4908
|
+
var gitConfigWriteOf = (args, namesTheSetting) => {
|
|
4909
|
+
if (!args.some((arg) => arg.text === GIT_CONFIG_SUBCOMMAND)) return void 0;
|
|
4849
4910
|
const operands = args.filter((arg) => !FLAG.test(arg.text));
|
|
4850
|
-
|
|
4911
|
+
if (gitConfigOnlyReads(args)) return void 0;
|
|
4912
|
+
const setting = operands.findIndex((arg) => namesTheSetting(arg.text));
|
|
4851
4913
|
const value = setting === -1 ? void 0 : operands[setting + 1];
|
|
4852
|
-
|
|
4853
|
-
|
|
4854
|
-
|
|
4914
|
+
return value === void 0 ? void 0 : { name: operands[setting]?.text ?? "", value };
|
|
4915
|
+
};
|
|
4916
|
+
var namesAGitSettingThatRunsAProgram = (name) => GIT_SETTING_THAT_RUNS_A_PROGRAM.test(name) || GIT_SETTING_THAT_RUNS_A_COMMAND_AFTER_A_BANG.test(name);
|
|
4917
|
+
var setsAGitSettingThatRunsAProgram = ({ program, args }) => {
|
|
4918
|
+
if (program === void 0 || basenameOf(program.text) !== GIT) return false;
|
|
4919
|
+
const written = gitConfigWriteOf(args, namesAGitSettingThatRunsAProgram);
|
|
4920
|
+
if (written === void 0 || namesNoNewProgram(written.name, written.value)) return false;
|
|
4921
|
+
return !GIT_SETTING_THAT_RUNS_A_COMMAND_AFTER_A_BANG.test(written.name) || written.value.expands || RUNS_A_SHELL_COMMAND.test(written.value.text);
|
|
4922
|
+
};
|
|
4923
|
+
var GIT_DESTINATION_SETTING = String.raw`(?:remote\..+\.(?:url|pushurl)|url\..+\.(?:insteadof|pushinsteadof))`;
|
|
4924
|
+
var GIT_SETTING_THAT_CHANGES_WHERE_GIT_SENDS = new RegExp(`^${GIT_DESTINATION_SETTING}$`, "i");
|
|
4925
|
+
var GIT_ONE_COMMAND_SETTING_THAT_CHANGES_WHERE_GIT_SENDS = new RegExp(`^${GIT_DESTINATION_SETTING}=`, "i");
|
|
4926
|
+
var GIT_REMOTE_SUBCOMMAND = "remote";
|
|
4927
|
+
var GIT_REMOTE_SET_URL = "set-url";
|
|
4928
|
+
var namesAGitSettingThatChangesWhereGitSends = (name) => GIT_SETTING_THAT_CHANGES_WHERE_GIT_SENDS.test(name);
|
|
4929
|
+
var setsWhereGitSendsForOneCommand = (args) => args.some((arg, index) => args[index - 1]?.text === GIT_ONE_COMMAND_SETTING_FLAG && GIT_ONE_COMMAND_SETTING_THAT_CHANGES_WHERE_GIT_SENDS.test(arg.text));
|
|
4930
|
+
var changesWhereGitSends = ({ program, args }) => {
|
|
4931
|
+
if (program === void 0 || basenameOf(program.text) !== GIT) return false;
|
|
4932
|
+
const [subcommand, action] = subcommandWordsOf(argsAfterGitGlobalOptions(args));
|
|
4933
|
+
if (subcommand?.text === GIT_PUSH) return setsWhereGitSendsForOneCommand(args);
|
|
4934
|
+
if (subcommand?.text === GIT_REMOTE_SUBCOMMAND) return action?.text === GIT_REMOTE_SET_URL;
|
|
4935
|
+
return gitConfigWriteOf(args, namesAGitSettingThatChangesWhereGitSends) !== void 0;
|
|
4855
4936
|
};
|
|
4856
4937
|
var writesAFileThatNeedsAPerson = ({ program, args }) => {
|
|
4857
4938
|
if (program === void 0) return false;
|
|
@@ -5470,6 +5551,93 @@ var writesAHostedSecret = (invocation) => {
|
|
|
5470
5551
|
const words = args.filter((arg) => !FLAG.test(arg.text)).map((arg) => arg.text.toLowerCase()).join(" ");
|
|
5471
5552
|
return (HOSTED_SECRET_WRITES.get(name)?.test(words) ?? false) || name === RAILWAY_CLI && RAILWAY_VARIABLES.test(words) && args.some((arg) => RAILWAY_SET_FLAG.test(arg.text));
|
|
5472
5553
|
};
|
|
5554
|
+
var NPM_REGISTRY_CHANGE = /^(?:(?:owner|author) (?:add|rm|remove)|dist-tags? (?:add|rm|remove|set)|deprecate|access (?:grant|revoke|public|restricted|set|edit|2fa-required|2fa-not-required)|team (?:create|destroy|add|rm))(?: |$)/;
|
|
5555
|
+
var YARN_REGISTRY_CHANGE = /^(?:npm )?(?:owner (?:add|remove)|tag (?:add|remove))(?: |$)/;
|
|
5556
|
+
var REGISTRY_CHANGE_BY_PACKAGE_MANAGER = /* @__PURE__ */ new Map([
|
|
5557
|
+
["npm", NPM_REGISTRY_CHANGE],
|
|
5558
|
+
["pnpm", NPM_REGISTRY_CHANGE],
|
|
5559
|
+
["yarn", YARN_REGISTRY_CHANGE]
|
|
5560
|
+
]);
|
|
5561
|
+
var PACKAGE_MANAGER_OPTIONS_WITH_A_VALUE = /* @__PURE__ */ new Map([
|
|
5562
|
+
["npm", /* @__PURE__ */ new Set(["-w", "--workspace", "--prefix", "-C", "--registry", "--userconfig", "--globalconfig", "--cache", "--loglevel", "--otp", "--scope"])],
|
|
5563
|
+
["pnpm", /* @__PURE__ */ new Set(["-F", "--filter", "-C", "--dir", "--registry", "--loglevel", "--otp", "--config-dir"])],
|
|
5564
|
+
["yarn", /* @__PURE__ */ new Set(["--cwd"])]
|
|
5565
|
+
]);
|
|
5566
|
+
var PACKAGE_MANAGER_RUNS_A_PACKAGE = /* @__PURE__ */ new Set(["exec", "x", "dlx"]);
|
|
5567
|
+
var NO_OPTIONS_WITH_A_VALUE = /* @__PURE__ */ new Set();
|
|
5568
|
+
var YARN = "yarn";
|
|
5569
|
+
var YARN_WORKSPACE = "workspace";
|
|
5570
|
+
var COREPACK = "corepack";
|
|
5571
|
+
var REGISTRY_COMMAND_WORDS = 3;
|
|
5572
|
+
var REGISTRY_COMMAND_SPAN = 8;
|
|
5573
|
+
var OPTIONS_BEFORE_A_REGISTRY_COMMAND = 16;
|
|
5574
|
+
var MAX_PACKAGE_RUNNER_DEPTH = 2;
|
|
5575
|
+
var MAX_COMMAND_WORD_LENGTH = 214;
|
|
5576
|
+
var WORD_TOO_LONG_TO_BE_A_COMMAND = "-";
|
|
5577
|
+
var optionTakesItsValueAlong = (option) => option.includes("=");
|
|
5578
|
+
var commandStartsAfterOptions = (args, from, optionsWithAValue) => {
|
|
5579
|
+
const end = Math.min(args.length, from + OPTIONS_BEFORE_A_REGISTRY_COMMAND);
|
|
5580
|
+
const starts = /* @__PURE__ */ new Set();
|
|
5581
|
+
const visited = /* @__PURE__ */ new Set();
|
|
5582
|
+
const pending = [from];
|
|
5583
|
+
for (let index = pending.pop(); index !== void 0; index = pending.pop()) {
|
|
5584
|
+
if (visited.has(index) || index >= end) continue;
|
|
5585
|
+
visited.add(index);
|
|
5586
|
+
const option = args[index]?.text ?? "";
|
|
5587
|
+
if (!FLAG.test(option)) starts.add(index);
|
|
5588
|
+
else if (optionTakesItsValueAlong(option)) pending.push(index + 1);
|
|
5589
|
+
else if (optionsWithAValue.has(option)) pending.push(index + 2);
|
|
5590
|
+
else if (FLAG.test(args[index + 1]?.text ?? "")) pending.push(index + 1);
|
|
5591
|
+
else pending.push(index + 1, index + 2);
|
|
5592
|
+
}
|
|
5593
|
+
return [...starts];
|
|
5594
|
+
};
|
|
5595
|
+
var commandWordText = (text3) => text3.length > MAX_COMMAND_WORD_LENGTH ? WORD_TOO_LONG_TO_BE_A_COMMAND : text3.toLowerCase();
|
|
5596
|
+
var commandWordsFrom = (args, start, optionsWithAValue) => {
|
|
5597
|
+
const words = [];
|
|
5598
|
+
const end = Math.min(args.length, start + REGISTRY_COMMAND_SPAN);
|
|
5599
|
+
for (let index = start; index < end && words.length < REGISTRY_COMMAND_WORDS; index++) {
|
|
5600
|
+
const text3 = args[index]?.text ?? "";
|
|
5601
|
+
if (!FLAG.test(text3)) words.push(commandWordText(text3));
|
|
5602
|
+
else if (optionsWithAValue.has(text3)) index++;
|
|
5603
|
+
}
|
|
5604
|
+
return words;
|
|
5605
|
+
};
|
|
5606
|
+
var packageManagerNameOf = (word) => {
|
|
5607
|
+
if (word.text.length > MAX_COMMAND_WORD_LENGTH) return void 0;
|
|
5608
|
+
const name = cliNameOf(word);
|
|
5609
|
+
return REGISTRY_CHANGE_BY_PACKAGE_MANAGER.has(name) || name === COREPACK ? name : void 0;
|
|
5610
|
+
};
|
|
5611
|
+
var packageManagerRunFrom = (args, from) => {
|
|
5612
|
+
const end = Math.min(args.length, from + REGISTRY_COMMAND_SPAN);
|
|
5613
|
+
for (let index = from; index < end; index++) {
|
|
5614
|
+
const word = args[index];
|
|
5615
|
+
const name = word === void 0 ? void 0 : packageManagerNameOf(word);
|
|
5616
|
+
if (name !== void 0) return { name, args: index + 1 };
|
|
5617
|
+
}
|
|
5618
|
+
return null;
|
|
5619
|
+
};
|
|
5620
|
+
var runChangesAPublishedPackage = (args, from, depth) => {
|
|
5621
|
+
const inner = depth > MAX_PACKAGE_RUNNER_DEPTH ? null : packageManagerRunFrom(args, from);
|
|
5622
|
+
return inner !== null && packageManagerChangesAPublishedPackage(inner.name, args, inner.args, depth);
|
|
5623
|
+
};
|
|
5624
|
+
var packageManagerChangesAPublishedPackage = (name, args, from, depth) => {
|
|
5625
|
+
if (name === COREPACK) return runChangesAPublishedPackage(args, from, depth + 1);
|
|
5626
|
+
const registryChange = REGISTRY_CHANGE_BY_PACKAGE_MANAGER.get(name);
|
|
5627
|
+
if (registryChange === void 0) return false;
|
|
5628
|
+
const options = PACKAGE_MANAGER_OPTIONS_WITH_A_VALUE.get(name) ?? NO_OPTIONS_WITH_A_VALUE;
|
|
5629
|
+
return commandStartsAfterOptions(args, from, options).some((start) => {
|
|
5630
|
+
const words = commandWordsFrom(args, start, options);
|
|
5631
|
+
const [first] = words;
|
|
5632
|
+
if (first !== void 0 && PACKAGE_MANAGER_RUNS_A_PACKAGE.has(first)) return runChangesAPublishedPackage(args, start + 1, depth + 1);
|
|
5633
|
+
if (name === YARN && first === YARN_WORKSPACE) return registryChange.test(commandWordsFrom(args, start + 2, options).join(" "));
|
|
5634
|
+
return registryChange.test(words.join(" "));
|
|
5635
|
+
});
|
|
5636
|
+
};
|
|
5637
|
+
var changesAPublishedPackage = ({ program, args }) => {
|
|
5638
|
+
const name = program === void 0 ? void 0 : packageManagerNameOf(program);
|
|
5639
|
+
return name !== void 0 && packageManagerChangesAPublishedPackage(name, args, 0, 0);
|
|
5640
|
+
};
|
|
5473
5641
|
var changesSomethingHostedElsewhere = (invocation) => githubCommandHasAConsequence(invocation) || writesThroughAServiceApi(invocation) || writesAHostedSecret(invocation) || sendsDataOffThisMachine(invocation) || copiesOntoAnotherMachine(invocation) || kubectlExecRunsMoreThanAReadOnlyCommand(invocation) || sshRunsMoreThanAReadOnlyCommand(invocation);
|
|
5474
5642
|
var segmentWritesThroughARemoteApi = (segment, depth) => {
|
|
5475
5643
|
const innermost = innermostInvocation(segment.invocation);
|
|
@@ -5770,14 +5938,34 @@ var honoursPreviewFlags = ({ program, args }) => {
|
|
|
5770
5938
|
var onlyPreviews = (invocation) => invocation.program !== void 0 && honoursPreviewFlags(invocation) && invocation.args.some((arg) => !arg.expands && PREVIEW_FLAG.test(arg.text));
|
|
5771
5939
|
var changesWhatIsDeployed = (toolName, invocation, normalized) => !onlyPreviews(invocation) && (changesProduction(invocation) || mergesAPullRequest(invocation) || isCoveredByPolicy(DEPLOY_AND_SCHEMA_COMMAND_PATTERNS, toolName, normalized));
|
|
5772
5940
|
var releasesOrChangesACluster = (toolName, invocation, normalized) => !onlyPreviews(invocation) && (pushesATag(invocation) || publishesAnAppBuild(invocation) || RELEASE_AND_CLUSTER_PROGRAMS.has(basenameOf(invocation.program?.text ?? "")) && isCoveredByPolicy(RELEASE_AND_CLUSTER_COMMAND_PATTERNS, toolName, normalized));
|
|
5773
|
-
var
|
|
5774
|
-
var
|
|
5941
|
+
var MAIL_TRANSFER_PROGRAMS = /* @__PURE__ */ new Set(["sendmail", "msmtp", "ssmtp"]);
|
|
5942
|
+
var MAIL_CLIENTS = /* @__PURE__ */ new Set(["mail", "mailx", "mutt", "s-nail", "nail"]);
|
|
5943
|
+
var MAIL_TRANSFER_MODE_THAT_ONLY_READS = /^(?:-b[ptv]|--help|--version|-V|--serverinfo|--pretend)$/;
|
|
5944
|
+
var EMAIL_ADDRESS = /^[^\s@]+@[^\s@]+$/;
|
|
5945
|
+
var ADDRESS_SEPARATOR = /[\s<>,;"'()]+/;
|
|
5946
|
+
var namesAnEmailAddress = (word) => word.text.includes("@") && word.text.split(ADDRESS_SEPARATOR).some((part) => EMAIL_ADDRESS.test(part));
|
|
5947
|
+
var sendsMail = ({ program, args }) => {
|
|
5948
|
+
if (program === void 0) return false;
|
|
5949
|
+
const name = basenameOf(program.text);
|
|
5950
|
+
if (MAIL_TRANSFER_PROGRAMS.has(name)) return !args.some((arg) => MAIL_TRANSFER_MODE_THAT_ONLY_READS.test(arg.text));
|
|
5951
|
+
return MAIL_CLIENTS.has(name) && args.some(namesAnEmailAddress);
|
|
5952
|
+
};
|
|
5953
|
+
var PROGRAMS_THAT_STOP_THE_MACHINE = /* @__PURE__ */ new Set(["shutdown", "reboot", "halt", "poweroff"]);
|
|
5954
|
+
var ONLY_DESCRIBES_ITSELF = /^--(?:help|version)$/;
|
|
5955
|
+
var SHUTDOWN = "shutdown";
|
|
5956
|
+
var CANCELS_A_SHUTDOWN = "-c";
|
|
5957
|
+
var stopsTheMachine = ({ program, args }) => {
|
|
5958
|
+
const name = program === void 0 ? void 0 : basenameOf(program.text);
|
|
5959
|
+
return name !== void 0 && PROGRAMS_THAT_STOP_THE_MACHINE.has(name) && !args.some((arg) => ONLY_DESCRIBES_ITSELF.test(arg.text)) && !(name === SHUTDOWN && args.some((arg) => arg.text === CANCELS_A_SHUTDOWN));
|
|
5960
|
+
};
|
|
5961
|
+
var invocationHasAConsequenceOnlyPermissionsOffAsksAbout = (toolName, invocation, normalized, reading) => releasesOrChangesACluster(toolName, invocation, normalized) || reading === "as_written" && changesAPublishedPackage(invocation) || mergesAPullRequestByAnyPath(invocation) || writesAFileThatNeedsAPerson(invocation) || changesWhereGitLooksForHooks(invocation) || setsAGitSettingThatRunsAProgram(invocation) || changesWhereGitSends(invocation) || changesSomethingHostedElsewhere(invocation) || sendsMail(invocation) || stopsTheMachine(invocation);
|
|
5962
|
+
var invocationHasAVisibleConsequence = (toolName, invocation, depth, line, reading = "as_written") => {
|
|
5775
5963
|
if (depth > MAX_CONSEQUENCE_DEPTH) return true;
|
|
5776
5964
|
if (invocation.program === void 0) return false;
|
|
5777
5965
|
const normalized = quotedInvocation(invocation);
|
|
5778
5966
|
const innermost = innermostInvocation(invocation);
|
|
5779
5967
|
const script = shellScriptOf(invocation);
|
|
5780
|
-
return classifyDecisionRisk(toolName, normalized) === "destructive" || changesWhatIsDeployed(toolName, invocation, normalized) || writesASecretFile(invocation) || line === "permissions_off" && invocationHasAConsequenceOnlyPermissionsOffAsksAbout(toolName, invocation, normalized) || losesDataVisibly(toolName, invocation, normalized, depth, line) || subcommandDestroysVisibly(invocation) || sqlClientChangesData(invocation) || innermost !== invocation && invocationHasAVisibleConsequence(toolName, innermost, depth, line) || script === null && passesAnInlineScript(invocation) || script !== null && commandHasAVisibleConsequenceAt(toolName, script, depth + 1, line) || readingsPastGlobalFlags(invocation).some((
|
|
5968
|
+
return classifyDecisionRisk(toolName, normalized) === "destructive" || changesWhatIsDeployed(toolName, invocation, normalized) || writesASecretFile(invocation) || line === "permissions_off" && invocationHasAConsequenceOnlyPermissionsOffAsksAbout(toolName, invocation, normalized, reading) || losesDataVisibly(toolName, invocation, normalized, depth, line) || subcommandDestroysVisibly(invocation) || sqlClientChangesData(invocation) || innermost !== invocation && invocationHasAVisibleConsequence(toolName, innermost, depth, line) || script === null && passesAnInlineScript(invocation) || script !== null && commandHasAVisibleConsequenceAt(toolName, script, depth + 1, line) || readingsPastGlobalFlags(invocation).some((pastFlags) => invocationHasAVisibleConsequence(toolName, pastFlags, depth + 1, line, "past_global_flags"));
|
|
5781
5969
|
};
|
|
5782
5970
|
var RUNS_FETCHED_CODE = /(?:\$\(|`|<\()\s*(?:curl|wget)\b/;
|
|
5783
5971
|
var RUNS_DECODED_CODE = /(?:^|[;&|(\s])(?:bash|sh|zsh|source|\.|python3?|node|ruby|perl)\s+(?:-[A-Za-z]+\s+)*["']?(?:<\(|\$\()[^)]*\b(?:base64|xxd|openssl)\b/;
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
configFailureKind,
|
|
5
5
|
retryAgentCommand,
|
|
6
6
|
writeSetupConfigFile
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-GNW6AHGY.js";
|
|
8
8
|
import {
|
|
9
9
|
MCP_BRIDGE_BINARY
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-AWO5VRPH.js";
|
|
11
11
|
import {
|
|
12
12
|
KEY_FILE_MODE
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-BYGU5IV4.js";
|
|
14
14
|
import {
|
|
15
15
|
CLINE_SERVER_NAME_TAKEN,
|
|
16
16
|
CLINE_SETTINGS_REFUSALS,
|
|
@@ -32,13 +32,13 @@ import {
|
|
|
32
32
|
withClinePusharyServer,
|
|
33
33
|
withRefreshedClineKey,
|
|
34
34
|
withoutClinePusharyServer
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-KRQKPVHG.js";
|
|
36
36
|
import {
|
|
37
37
|
readJsonSafe,
|
|
38
38
|
resolveGlobalBinary,
|
|
39
39
|
writeFileAtomic,
|
|
40
40
|
writeJsonAtomic
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-7DJWJWRS.js";
|
|
42
42
|
|
|
43
43
|
// src/fx-config.ts
|
|
44
44
|
var FX_SERVER_NAME = "pushary";
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import {
|
|
2
2
|
registerTranscript
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-N4SM5GMN.js";
|
|
4
4
|
import {
|
|
5
5
|
namedEvent
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JATIKUQ5.js";
|
|
7
7
|
import {
|
|
8
8
|
isBridgeLocator,
|
|
9
9
|
liveBridgeProbe,
|
|
10
10
|
pusharyHookExecutable,
|
|
11
11
|
resolveBridgeStub
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-MLFZ4F2L.js";
|
|
13
13
|
import {
|
|
14
14
|
writeDegraded
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-3VWS2EAB.js";
|
|
16
16
|
import {
|
|
17
17
|
cursorUserHooks
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-KRQKPVHG.js";
|
|
19
19
|
import {
|
|
20
20
|
atLeast,
|
|
21
21
|
parseVersion
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-7DJWJWRS.js";
|
|
23
23
|
import {
|
|
24
24
|
CURSOR_GATE_COVERAGE,
|
|
25
25
|
CURSOR_GATE_SCRIPT,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
isGrokSessionEndStop,
|
|
34
34
|
isRecord,
|
|
35
35
|
toolsCoveredByGateEntry
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-EBGUGOS3.js";
|
|
37
37
|
|
|
38
38
|
// src/tool-hook-input.ts
|
|
39
39
|
var OPTIONAL_TEXT_FIELDS = ["hook_event_name", "session_id", "cwd", "transcript_path", "tool_use_id", "permission_mode", "cursor_version"];
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
readMacAppAgentKey
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LM2YX5SO.js";
|
|
4
4
|
import {
|
|
5
5
|
API_KEYS_PATH
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-KLLX5ZTC.js";
|
|
7
7
|
import {
|
|
8
8
|
findExportedKeyLines,
|
|
9
9
|
isAdoptedMacAppKey,
|
|
@@ -13,13 +13,13 @@ import {
|
|
|
13
13
|
readConfigFileKey,
|
|
14
14
|
readKeySource,
|
|
15
15
|
readMacAppKeyPrefix
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-BYGU5IV4.js";
|
|
17
17
|
import {
|
|
18
18
|
absoluteUrl
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-IOMU3A6E.js";
|
|
20
20
|
import {
|
|
21
21
|
isValidApiKey
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-EBGUGOS3.js";
|
|
23
23
|
|
|
24
24
|
// src/key-revocation.ts
|
|
25
25
|
var SELF_REVOKE_PATH = "/api/v1/server/keys/self/revoke";
|
|
@@ -1,43 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
external_exports
|
|
3
|
-
} from "./chunk-XMSDA5WA.js";
|
|
4
|
-
import {
|
|
5
|
-
writeJsonAtomic
|
|
6
|
-
} from "./chunk-6CDA4R5L.js";
|
|
7
|
-
|
|
8
|
-
// src/transcript-read-positions.ts
|
|
9
|
-
import { lstatSync, readFileSync } from "fs";
|
|
10
|
-
var OWNER_ONLY_FILE_MODE = 384;
|
|
11
|
-
var MAXIMUM_READ_POSITIONS_BYTES = 4 * 1024 * 1024;
|
|
12
|
-
var transcriptReadPositionSchema = external_exports.object({
|
|
13
|
-
identity: external_exports.string().nullable(),
|
|
14
|
-
offset: external_exports.number().int().nonnegative(),
|
|
15
|
-
startedBeforeEpoch: external_exports.boolean()
|
|
16
|
-
});
|
|
17
|
-
var savedReadPositionsSchema = external_exports.object({ positions: external_exports.record(external_exports.string(), transcriptReadPositionSchema) });
|
|
18
|
-
var ownedOnlyByThisUser = (info) => !process.getuid || info.uid === process.getuid() && (info.mode & 511) === OWNER_ONLY_FILE_MODE;
|
|
19
|
-
var readOwnerOnlyJson = (path, maximumBytes) => {
|
|
20
|
-
const info = lstatSync(path);
|
|
21
|
-
if (!info.isFile() || info.nlink !== 1 || !ownedOnlyByThisUser(info) || info.size > maximumBytes) return null;
|
|
22
|
-
return JSON.parse(readFileSync(path, "utf8"));
|
|
23
|
-
};
|
|
24
|
-
var savedTranscriptReadPositions = (file) => ({
|
|
25
|
-
load: () => {
|
|
26
|
-
try {
|
|
27
|
-
return new Map(Object.entries(savedReadPositionsSchema.parse(readOwnerOnlyJson(file, MAXIMUM_READ_POSITIONS_BYTES)).positions));
|
|
28
|
-
} catch {
|
|
29
|
-
return /* @__PURE__ */ new Map();
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
save: (positions) => {
|
|
33
|
-
try {
|
|
34
|
-
writeJsonAtomic(file, { positions: Object.fromEntries(positions) }, OWNER_ONLY_FILE_MODE);
|
|
35
|
-
} catch {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
|
|
41
1
|
// ../contracts/src/billing.ts
|
|
42
2
|
var PARTNER_SELF_SERVE_PLANS = ["partner_launch", "partner_growth", "partner_scale"];
|
|
43
3
|
var PARTNER_PLAN_TYPES = ["partner", ...PARTNER_SELF_SERVE_PLANS];
|
|
@@ -273,9 +233,6 @@ var PLAN_CONFIGS = {
|
|
|
273
233
|
};
|
|
274
234
|
|
|
275
235
|
export {
|
|
276
|
-
transcriptReadPositionSchema,
|
|
277
|
-
readOwnerOnlyJson,
|
|
278
|
-
savedTranscriptReadPositions,
|
|
279
236
|
PLAN_TYPES,
|
|
280
237
|
SESSION_HISTORY_RETENTION_DAYS,
|
|
281
238
|
PLAN_CONFIGS
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
realpath
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IBHSZUXM.js";
|
|
4
4
|
import {
|
|
5
5
|
findNativeClaudeInstall
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PED2VA34.js";
|
|
7
7
|
import {
|
|
8
8
|
readGlobalPrefixAsync,
|
|
9
9
|
resolveGlobalBinary,
|
|
@@ -13,10 +13,10 @@ import {
|
|
|
13
13
|
resolvePackageVersionFromBinary,
|
|
14
14
|
resolvePathBinary,
|
|
15
15
|
resolvePathBinaryAsync
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-7DJWJWRS.js";
|
|
17
17
|
import {
|
|
18
18
|
MANAGED_PROVIDERS
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-EBGUGOS3.js";
|
|
20
20
|
|
|
21
21
|
// src/live-capabilities.ts
|
|
22
22
|
import { homedir } from "os";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ensureCodexTrustsPusharyHooks
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-T3HCMKX4.js";
|
|
4
4
|
import {
|
|
5
5
|
hermesReceiptPaths,
|
|
6
6
|
hermesSetupPredatesThePluginFolder,
|
|
7
7
|
installHermesPlugin,
|
|
8
8
|
refreshHermesPluginFiles,
|
|
9
9
|
shippedHermesPlugin
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-U4MEORPA.js";
|
|
11
11
|
import {
|
|
12
12
|
fxIgnoresInstructionsFile,
|
|
13
13
|
fxInstructionsBody,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
macAppFxBridge,
|
|
17
17
|
refreshClineKey,
|
|
18
18
|
switchFxHttpEntryToBridge
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-EJ7DI2HX.js";
|
|
20
20
|
import {
|
|
21
21
|
OPENCODE_HOOK_BINARY,
|
|
22
22
|
agentHookOwner,
|
|
@@ -28,16 +28,16 @@ import {
|
|
|
28
28
|
openCodePluginDir,
|
|
29
29
|
openCodeWired,
|
|
30
30
|
withOpenCodeAskRules
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-RB4E2YHR.js";
|
|
32
32
|
import {
|
|
33
33
|
detectClaudeVersion
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-IBHSZUXM.js";
|
|
35
35
|
import {
|
|
36
36
|
addCompatibleHooks,
|
|
37
37
|
compatibleConfigFile,
|
|
38
38
|
compatibleInstructionsFile,
|
|
39
39
|
hasCompatibleHooks
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-JATIKUQ5.js";
|
|
41
41
|
import {
|
|
42
42
|
GEMINI_HOOK_BINARY,
|
|
43
43
|
addGeminiHooks,
|
|
@@ -49,7 +49,7 @@ import {
|
|
|
49
49
|
geminiWired,
|
|
50
50
|
hasGeminiHooks,
|
|
51
51
|
planHooks
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-MLFZ4F2L.js";
|
|
53
53
|
import {
|
|
54
54
|
CLAUDE_HOOK_BINARY,
|
|
55
55
|
CLAUDE_HOOK_EVENTS,
|
|
@@ -95,7 +95,7 @@ import {
|
|
|
95
95
|
renderAgentInstructions,
|
|
96
96
|
supportedClaudeEvents,
|
|
97
97
|
vscodePluginMcp
|
|
98
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-KRQKPVHG.js";
|
|
99
99
|
import {
|
|
100
100
|
formatVersion,
|
|
101
101
|
hookCommandsUseBareNames,
|
|
@@ -104,12 +104,12 @@ import {
|
|
|
104
104
|
resolveGlobalBinary,
|
|
105
105
|
writeFileAtomic,
|
|
106
106
|
writeJsonAtomic
|
|
107
|
-
} from "./chunk-
|
|
107
|
+
} from "./chunk-7DJWJWRS.js";
|
|
108
108
|
import {
|
|
109
109
|
HOOK_COMPATIBLE_PROFILES,
|
|
110
110
|
isCompatibleAgentType,
|
|
111
111
|
isRecord
|
|
112
|
-
} from "./chunk-
|
|
112
|
+
} from "./chunk-EBGUGOS3.js";
|
|
113
113
|
|
|
114
114
|
// src/reapply.ts
|
|
115
115
|
import { dirname, join } from "path";
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
NpmMissingError,
|
|
4
4
|
NpmPermissionError,
|
|
5
5
|
writeFileAtomic
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7DJWJWRS.js";
|
|
7
7
|
import {
|
|
8
8
|
NPX_LATEST_COMMAND
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-3QTUISNT.js";
|
|
10
10
|
import {
|
|
11
11
|
readSetupAgentFailures
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-EBGUGOS3.js";
|
|
13
13
|
|
|
14
14
|
// src/setup/config-write.ts
|
|
15
15
|
var AgentConfigWriteError = class extends Error {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SETUP_FLAGS
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SYMYZNSB.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-3QTUISNT.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-EBGUGOS3.js";
|
|
21
21
|
|
|
22
22
|
// src/cli/cowork.ts
|
|
23
23
|
import { readFileSync } from "fs";
|