pushary 1.9.109 → 1.9.111
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 +10 -0
- package/dist/{api-YCDTPFT7.js → api-AESRTYYT.js} +11 -10
- package/dist/bin/pushary-audit.js +3 -3
- package/dist/bin/pushary-bell-hook.js +27 -26
- package/dist/bin/pushary-bell.js +10 -10
- package/dist/bin/pushary-claude.js +25 -24
- package/dist/bin/pushary-clean.js +34 -33
- package/dist/bin/pushary-codex-bridge.js +21 -20
- package/dist/bin/pushary-codex-hook.js +32 -31
- package/dist/bin/pushary-codex-session.js +8 -8
- package/dist/bin/pushary-codex.js +15 -14
- package/dist/bin/pushary-connect.js +28 -27
- package/dist/bin/pushary-cowork.js +5 -5
- package/dist/bin/pushary-daemon.js +41 -40
- package/dist/bin/pushary-disconnect.js +27 -26
- package/dist/bin/pushary-display-hook.js +17 -16
- package/dist/bin/pushary-doctor.js +42 -41
- package/dist/bin/pushary-elicitation-hook.js +27 -26
- package/dist/bin/pushary-gemini-bridge.js +15 -14
- package/dist/bin/pushary-gemini-hook.js +29 -28
- package/dist/bin/pushary-hook.js +32 -31
- package/dist/bin/pushary-login.js +21 -20
- package/dist/bin/pushary-logout.js +26 -25
- package/dist/bin/pushary-mcp.js +12 -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 +32 -31
- package/dist/bin/pushary-permission-hook.js +32 -31
- 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 +26 -25
- package/dist/bin/pushary-session-start-hook.js +35 -34
- package/dist/bin/pushary-setup.js +46 -45
- package/dist/bin/pushary-stats.js +5 -5
- package/dist/bin/pushary-status.js +32 -31
- 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 +17 -16
- package/dist/bin/pushary-transcripts.js +25 -24
- package/dist/bin/pushary-upgrade.js +40 -39
- package/dist/bin/pushary-wait.js +15 -15
- package/dist/bin/pushary.js +7 -7
- package/dist/{chunk-BDAT6H7J.js → chunk-262UYDKT.js} +6 -3
- package/dist/{chunk-QMUSLBVA.js → chunk-2MOWY5QL.js} +5 -5
- package/dist/{chunk-QPNYMNB7.js → chunk-37F75NBN.js} +2 -2
- package/dist/{chunk-BFXJUZUH.js → chunk-3AX5BKYN.js} +2 -2
- package/dist/{chunk-DYA7VIL6.js → chunk-4AKZALX4.js} +14 -14
- package/dist/{chunk-FIFSPMQZ.js → chunk-4M6VUUTX.js} +3 -3
- package/dist/{chunk-K6E24TJ6.js → chunk-54DPX27B.js} +1 -1
- package/dist/{chunk-BUBLUKJM.js → chunk-56ANL3UO.js} +13 -10
- package/dist/{chunk-4BDOUP4B.js → chunk-5EEW4WIS.js} +5 -5
- package/dist/{chunk-G6PHMB3F.js → chunk-5RVL2CQK.js} +3 -3
- package/dist/{chunk-7VIJBCMF.js → chunk-75UJ7W6H.js} +2 -2
- package/dist/{chunk-F3O5VDQL.js → chunk-76ATPJN2.js} +4 -4
- package/dist/{chunk-PEWTRW6S.js → chunk-7HDO5W4C.js} +24 -16
- package/dist/{chunk-PZ3X6NFM.js → chunk-AW7IJ56H.js} +4 -4
- package/dist/{chunk-3X3FNKAE.js → chunk-BH5WEDQ4.js} +1 -1
- package/dist/{chunk-U6LVSHBR.js → chunk-BM32JPXJ.js} +7 -7
- package/dist/{chunk-XUKBMRT2.js → chunk-CIT4NO5H.js} +4 -4
- package/dist/{chunk-KCKLLGMW.js → chunk-DEHWKUKF.js} +4 -4
- package/dist/{chunk-SALM3IYQ.js → chunk-DZE26BID.js} +467 -28
- package/dist/{chunk-FR25IWL7.js → chunk-EPMIBLCE.js} +9 -6
- package/dist/{chunk-EMEF7ALE.js → chunk-FE7HSLTK.js} +5 -5
- package/dist/{chunk-UC2NBQS3.js → chunk-FYVRA5GN.js} +1 -1
- package/dist/{chunk-GU7AN46G.js → chunk-G2TTGQ5A.js} +10 -10
- package/dist/{chunk-7S262556.js → chunk-G42VQNBC.js} +1 -1
- package/dist/{chunk-KCDWWT42.js → chunk-GXTW3W45.js} +1 -1
- package/dist/{chunk-MYDTSPIZ.js → chunk-KHWNW4AS.js} +1 -1
- package/dist/{chunk-S442423U.js → chunk-KICQRZAT.js} +1 -1
- package/dist/{chunk-ULTBTBMV.js → chunk-KLCT2YQD.js} +6 -6
- package/dist/{chunk-S7LMAMMY.js → chunk-LDE7L7XO.js} +4 -4
- package/dist/{chunk-R7D2YAXW.js → chunk-LMECI62A.js} +6 -6
- package/dist/{chunk-I4THVOUC.js → chunk-LTVILMEZ.js} +2 -2
- package/dist/{chunk-7KBKJ2KH.js → chunk-LUFKWK7N.js} +3 -3
- package/dist/{chunk-VZVEZILS.js → chunk-M73Q37LC.js} +2 -2
- package/dist/{chunk-WU3TP2TP.js → chunk-N2VH44GL.js} +6 -6
- package/dist/{chunk-ANKVTTB3.js → chunk-NHDTSA7V.js} +1 -1
- package/dist/{chunk-4SUNBCR6.js → chunk-NUU2JVOG.js} +3 -3
- package/dist/{chunk-UK4Z3X75.js → chunk-NVPCETJ3.js} +1 -1
- package/dist/{chunk-3YY6CUU7.js → chunk-NZZFIIH6.js} +4 -4
- package/dist/{chunk-ZMZG32RS.js → chunk-O2MZQPP4.js} +7 -3
- package/dist/{chunk-RXRKX646.js → chunk-O76PTPKP.js} +1 -1
- package/dist/{chunk-QNUGTQKZ.js → chunk-OECCPPO6.js} +3 -3
- package/dist/{chunk-KK5YNO2M.js → chunk-PCFIYMK4.js} +2 -2
- package/dist/{chunk-X5VHTPAD.js → chunk-PTBWLU4G.js} +5 -5
- package/dist/chunk-PYAPWXVP.js +81 -0
- package/dist/{chunk-6OSRPTDX.js → chunk-Q63L3VBY.js} +4 -4
- package/dist/{chunk-MAWFWQLR.js → chunk-QQMT2JIC.js} +3 -3
- package/dist/{chunk-SDZBQQEK.js → chunk-QVGE26SZ.js} +4 -4
- package/dist/{chunk-HLZIHAUY.js → chunk-R3KDA7JB.js} +3 -3
- package/dist/{chunk-YB2S73VZ.js → chunk-RBM2ROSY.js} +1 -1
- package/dist/{chunk-T3B2L64E.js → chunk-RFFIAX33.js} +2 -2
- package/dist/{chunk-S2NBNU4K.js → chunk-RUORT3DE.js} +5 -5
- package/dist/{chunk-J5EAU44S.js → chunk-SDQQ43FT.js} +1 -1
- package/dist/{chunk-II6M23WI.js → chunk-SSW4QRGU.js} +6 -6
- package/dist/{chunk-FYK7JV2R.js → chunk-TILEGY4M.js} +11 -8
- package/dist/{chunk-VKGSGULO.js → chunk-UN2QALQO.js} +5 -5
- package/dist/{chunk-TKJJWIR4.js → chunk-VA4OGALQ.js} +2 -2
- package/dist/{chunk-V25XPPEY.js → chunk-WO46WX65.js} +2 -2
- package/dist/{chunk-M6SP3FZF.js → chunk-X2XXKXC5.js} +3 -3
- package/dist/{chunk-JOF3TPDT.js → chunk-X5P3IO37.js} +2 -2
- package/dist/{chunk-4472LNSQ.js → chunk-XJ4PMNCR.js} +1 -1
- package/dist/{chunk-P7LHBBM5.js → chunk-Y3N7LIFV.js} +3 -3
- package/dist/{chunk-GNOSBEUB.js → chunk-YBQF7DCL.js} +1 -1
- package/dist/{chunk-3OPHZY7L.js → chunk-YHHWO4IU.js} +1 -1
- package/dist/{chunk-MMHBNMHK.js → chunk-YI5I2TF3.js} +3 -3
- package/dist/{chunk-F7BLCVHZ.js → chunk-YILMWIZN.js} +2 -2
- package/dist/{chunk-SCQRKKGL.js → chunk-YNTB3MIQ.js} +1 -1
- package/dist/{chunk-3SFUJREU.js → chunk-YQMARTNQ.js} +2 -2
- package/dist/{chunk-TIU3TP36.js → chunk-YXFLZ2LO.js} +2 -2
- package/dist/{chunk-H3FRQS4V.js → chunk-ZLLQO4RU.js} +6 -6
- package/dist/{codex-app-cards-switch-CQIIZDPU.js → codex-app-cards-switch-SXY732CY.js} +11 -11
- package/dist/{codex-card-routing-KIFZHIHM.js → codex-card-routing-K5FNOTBK.js} +2 -2
- package/dist/{codex-desktop-launch-YPISWZJX.js → codex-desktop-launch-SMWGCLWW.js} +1 -1
- package/dist/{codex-session-launch-ZL5WZXD7.js → codex-session-launch-MDMNYCCG.js} +18 -17
- package/dist/{config-3V3AT3AR.js → config-3R7UVC67.js} +3 -3
- package/dist/{global-upgrade-DI4JAPW6.js → global-upgrade-2BXXJQHR.js} +9 -9
- package/dist/{identity-XP7JUJJR.js → identity-N45XKYBA.js} +4 -4
- package/dist/{live-capabilities-TFDE3XNS.js → live-capabilities-YT7CENI2.js} +4 -4
- package/dist/{paths-ZC5TUIHB.js → paths-A2TITMY3.js} +3 -3
- package/dist/{reapply-T2BYF7XY.js → reapply-O4TGPUVZ.js} +28 -27
- package/dist/src/index.js +31 -30
- package/dist/{upgrade-lock-IWVHMUXK.js → upgrade-lock-HYD3MFFS.js} +4 -4
- package/dist/{usage-Z6WWH3ED.js → usage-PTPB2XF6.js} +3 -3
- package/package.json +1 -1
|
@@ -3317,6 +3317,11 @@ var AUTH_REJECTION_REASONS = [
|
|
|
3317
3317
|
"site_not_found",
|
|
3318
3318
|
...AGENT_SITE_REJECTION_REASONS
|
|
3319
3319
|
];
|
|
3320
|
+
var CREDENTIAL_REJECTION_HEADER = "x-pushary-credential";
|
|
3321
|
+
var CREDENTIAL_REJECTED = "rejected";
|
|
3322
|
+
var CREDENTIAL_REJECTION_STATUS = 401;
|
|
3323
|
+
var MCP_CREDENTIAL_REJECTION_BODY = JSON.stringify({ error: "invalid_token", error_description: "No authorization provided" });
|
|
3324
|
+
var responseRejectsCredential = (status, headers) => status === CREDENTIAL_REJECTION_STATUS && headers.get(CREDENTIAL_REJECTION_HEADER)?.trim() === CREDENTIAL_REJECTED;
|
|
3320
3325
|
var TOOL_FAILURE_META_KEY = "pushary/failure";
|
|
3321
3326
|
var TOOL_FAILURE_CODES = {
|
|
3322
3327
|
questionLimit: "question_limit",
|
|
@@ -3480,6 +3485,16 @@ var readSetupOutcomeProperties = (body) => {
|
|
|
3480
3485
|
};
|
|
3481
3486
|
};
|
|
3482
3487
|
|
|
3488
|
+
// ../contracts/src/policy-capabilities.ts
|
|
3489
|
+
var POLICY_REQUEST_CAPABILITIES_HEADER = "x-pushary-policy-capabilities";
|
|
3490
|
+
var POLICY_REQUEST_CAPABILITY = {
|
|
3491
|
+
readsCommandRunnersAndAVersionedCache: "command-runners-1"
|
|
3492
|
+
};
|
|
3493
|
+
var KNOWN_POLICY_REQUEST_CAPABILITIES = Object.values(POLICY_REQUEST_CAPABILITY);
|
|
3494
|
+
var CLI_POLICY_REQUEST_CAPABILITIES = [POLICY_REQUEST_CAPABILITY.readsCommandRunnersAndAVersionedCache];
|
|
3495
|
+
var POLICY_REQUEST_CAPABILITY_SEPARATOR = ",";
|
|
3496
|
+
var policyRequestCapabilitiesHeaderValue = (capabilities) => capabilities.join(POLICY_REQUEST_CAPABILITY_SEPARATOR);
|
|
3497
|
+
|
|
3483
3498
|
// ../contracts/src/declined-agents.ts
|
|
3484
3499
|
var DECLINED_AGENTS_FILE = "declined-agents.json";
|
|
3485
3500
|
var DECLINED_AGENTS_VERSION = 1;
|
|
@@ -6638,7 +6653,7 @@ var posixShellJudgeFor = (toolName, line = "standing_allow") => ({
|
|
|
6638
6653
|
namesAFileThatNeedsAPerson: line === "permissions_off" ? pathNeedsAPersonToChange : namesASecretPowerShellPath,
|
|
6639
6654
|
webRequestNeedsAPerson: line === "permissions_off" ? webRequestSendsDataOffThisMachine : noWebRequestNeedsAPerson
|
|
6640
6655
|
});
|
|
6641
|
-
var commandIsDestructive = (toolName, command) => shellDialectOf(toolName) === "powershell" ? powerShellCommandIsDestructive(command, posixShellJudgeFor(toolName)) :
|
|
6656
|
+
var commandIsDestructive = (toolName, command) => shellDialectOf(toolName) === "powershell" ? powerShellCommandIsDestructive(command, posixShellJudgeFor(toolName)) : aReadingIsDestructive(toolName, command);
|
|
6642
6657
|
var commandHasAConsequenceOnTheLine = (toolName, command, line) => shellDialectOf(toolName) === "powershell" ? powerShellCommandHasAVisibleConsequence(command, posixShellJudgeFor(toolName, line)) : commandHasAVisibleConsequenceAt(toolNameForAPosixReading(toolName), command, 0, line);
|
|
6643
6658
|
var commandHasAVisibleConsequence = (toolName, command) => commandHasAConsequenceOnTheLine(toolName, command, "standing_allow");
|
|
6644
6659
|
var commandHasAConsequenceWithPermissionsOff = (toolName, command) => commandHasAConsequenceOnTheLine(toolName, command, "permissions_off");
|
|
@@ -6747,30 +6762,423 @@ var spelledSegmentsOf = (command) => {
|
|
|
6747
6762
|
const parsed = readableCommandSegments(command);
|
|
6748
6763
|
return parsed === null ? roughSegmentsOf(command).map(roughSpelledSegment) : parsed.map(parsedSpelledSegment);
|
|
6749
6764
|
};
|
|
6750
|
-
var SPELLINGS_OF_AN_UNREADABLE_COMMAND = { forms: [], hidesWhatItRuns: true };
|
|
6751
|
-
var
|
|
6752
|
-
|
|
6753
|
-
|
|
6754
|
-
|
|
6755
|
-
|
|
6765
|
+
var SPELLINGS_OF_AN_UNREADABLE_COMMAND = { forms: [], hidesWhatItRuns: true, completeness: "unreadable" };
|
|
6766
|
+
var spellingsAreComplete = (spellings) => spellings.completeness === "complete";
|
|
6767
|
+
var SPELLS_WITHOUT_COMMAND_RUNNERS = "without_command_runners";
|
|
6768
|
+
var SPELLS_COMMAND_RUNNERS_TOO = "with_command_runners";
|
|
6769
|
+
var readsCommandRunners = (reach) => reach === SPELLS_COMMAND_RUNNERS_TOO;
|
|
6770
|
+
var NO_OPTIONS = /* @__PURE__ */ new Set();
|
|
6771
|
+
var runnerSyntax = (subcommands, optionReadings, { globalOptionsWithAValue = [], operandsBeforeTheCommand = [0], optionsWithAnOptionalValue = [] } = {}) => ({
|
|
6772
|
+
subcommands: subcommands === null ? null : new Set(subcommands),
|
|
6773
|
+
globalOptionsWithAValue: globalOptionsWithAValue.length === 0 ? NO_OPTIONS : new Set(globalOptionsWithAValue),
|
|
6774
|
+
optionsWithAnOptionalValue: optionsWithAnOptionalValue.length === 0 ? NO_OPTIONS : new Set(optionsWithAnOptionalValue),
|
|
6775
|
+
readings: optionReadings.flatMap((options) => operandsBeforeTheCommand.map((operands) => wrapperSyntax(options, operands)))
|
|
6776
|
+
});
|
|
6777
|
+
var UV_GLOBAL_OPTIONS_WITH_A_VALUE = [
|
|
6778
|
+
"--directory",
|
|
6779
|
+
"--project",
|
|
6780
|
+
"--cache-dir",
|
|
6781
|
+
"--config-file",
|
|
6782
|
+
"--color",
|
|
6783
|
+
"--python-preference",
|
|
6784
|
+
"--allow-insecure-host"
|
|
6785
|
+
];
|
|
6786
|
+
var UV_RUN_OPTIONS_WITH_A_VALUE = [
|
|
6787
|
+
...UV_GLOBAL_OPTIONS_WITH_A_VALUE,
|
|
6788
|
+
"--with",
|
|
6789
|
+
"--with-editable",
|
|
6790
|
+
"--with-requirements",
|
|
6791
|
+
"--python",
|
|
6792
|
+
"-p",
|
|
6793
|
+
"--package",
|
|
6794
|
+
"--extra",
|
|
6795
|
+
"--group",
|
|
6796
|
+
"--only-group",
|
|
6797
|
+
"--no-group",
|
|
6798
|
+
"--env-file",
|
|
6799
|
+
"--index",
|
|
6800
|
+
"--default-index",
|
|
6801
|
+
"--index-url",
|
|
6802
|
+
"-i",
|
|
6803
|
+
"--extra-index-url",
|
|
6804
|
+
"--find-links",
|
|
6805
|
+
"-f",
|
|
6806
|
+
"--index-strategy",
|
|
6807
|
+
"--keyring-provider",
|
|
6808
|
+
"--resolution",
|
|
6809
|
+
"--prerelease",
|
|
6810
|
+
"--exclude-newer",
|
|
6811
|
+
"--link-mode",
|
|
6812
|
+
"--config-setting",
|
|
6813
|
+
"-C",
|
|
6814
|
+
"--refresh-package",
|
|
6815
|
+
"--reinstall-package",
|
|
6816
|
+
"--upgrade-package",
|
|
6817
|
+
"-P",
|
|
6818
|
+
"--no-build-package",
|
|
6819
|
+
"--no-binary-package"
|
|
6820
|
+
];
|
|
6821
|
+
var POETRY_OPTIONS_WITH_A_VALUE = ["-C", "--directory", "-P", "--project"];
|
|
6822
|
+
var OP_OPTIONS_WITH_A_VALUE = ["--env-file", "--account", "--config", "--encoding", "--session", "--cache"];
|
|
6823
|
+
var DOTENV_OPTIONS_WITH_A_VALUE = ["-e", "-v", "-p"];
|
|
6824
|
+
var DOTENV_OPTIONS_WITH_AN_OPTIONAL_VALUE = ["-c"];
|
|
6825
|
+
var SCRIPT_COMMAND_STRING_OPTIONS = /* @__PURE__ */ new Set(["-c", "--command"]);
|
|
6826
|
+
var SCRIPT_OPTIONS_WITH_A_VALUE = [
|
|
6827
|
+
...SCRIPT_COMMAND_STRING_OPTIONS,
|
|
6828
|
+
"-t",
|
|
6829
|
+
"-T",
|
|
6830
|
+
"-E",
|
|
6831
|
+
"--echo",
|
|
6832
|
+
"-I",
|
|
6833
|
+
"--log-in",
|
|
6834
|
+
"-O",
|
|
6835
|
+
"--log-out",
|
|
6836
|
+
"-B",
|
|
6837
|
+
"--log-io",
|
|
6838
|
+
"--log-timing",
|
|
6839
|
+
"-m",
|
|
6840
|
+
"--logging-format",
|
|
6841
|
+
"-o",
|
|
6842
|
+
"--output-limit"
|
|
6843
|
+
];
|
|
6844
|
+
var SCRIPT = "script";
|
|
6845
|
+
var PNPM_OPTIONS_WITH_A_VALUE = ["-C", "--dir", "--filter", "-F", "--package", "--workspace-concurrency", "--reporter", "--loglevel"];
|
|
6846
|
+
var YARN_OPTIONS_WITH_A_VALUE = ["--cwd", "-p", "--package"];
|
|
6847
|
+
var NPM_OPTIONS_WITH_A_VALUE = ["--prefix", "-w", "--workspace", "--package", "--userconfig", "--cache", "--registry", "--loglevel"];
|
|
6848
|
+
var HATCH_OPTIONS_WITH_A_VALUE = ["-e", "--env", "-p", "--project", "--data-dir", "--cache-dir", "--config"];
|
|
6849
|
+
var PDM_OPTIONS_WITH_A_VALUE = ["-p", "--project"];
|
|
6850
|
+
var DOCKER_OPTIONS_WITH_A_VALUE = [
|
|
6851
|
+
"--context",
|
|
6852
|
+
"-H",
|
|
6853
|
+
"--host",
|
|
6854
|
+
"--config",
|
|
6855
|
+
"-l",
|
|
6856
|
+
"--log-level",
|
|
6857
|
+
"-e",
|
|
6858
|
+
"--env",
|
|
6859
|
+
"--env-file",
|
|
6860
|
+
"-u",
|
|
6861
|
+
"--user",
|
|
6862
|
+
"-w",
|
|
6863
|
+
"--workdir",
|
|
6864
|
+
"--detach-keys"
|
|
6865
|
+
];
|
|
6866
|
+
var KUBECTL_OPTIONS_WITH_A_VALUE = [
|
|
6867
|
+
"-n",
|
|
6868
|
+
"--namespace",
|
|
6869
|
+
"--context",
|
|
6870
|
+
"--kubeconfig",
|
|
6871
|
+
"--cluster",
|
|
6872
|
+
"--user",
|
|
6873
|
+
"-s",
|
|
6874
|
+
"--server",
|
|
6875
|
+
"--token",
|
|
6876
|
+
"--as",
|
|
6877
|
+
"-c",
|
|
6878
|
+
"--container",
|
|
6879
|
+
"-f",
|
|
6880
|
+
"--filename",
|
|
6881
|
+
"--pod-running-timeout"
|
|
6882
|
+
];
|
|
6883
|
+
var PIXI_OPTIONS_WITH_A_VALUE = ["-e", "--environment", "--manifest-path"];
|
|
6884
|
+
var CONDA_OPTIONS_WITH_A_VALUE = ["-n", "--name", "-p", "--prefix", "--cwd"];
|
|
6885
|
+
var PIPX_OPTIONS_WITH_A_VALUE = ["--spec", "--python", "--index-url", "--pip-args"];
|
|
6886
|
+
var VOLTA_OPTIONS_WITH_A_VALUE = ["--node", "--npm", "--yarn", "--pnpm", "--env"];
|
|
6887
|
+
var DEVCONTAINER_OPTIONS_WITH_A_VALUE = [
|
|
6888
|
+
"--workspace-folder",
|
|
6889
|
+
"--container-id",
|
|
6890
|
+
"--id-label",
|
|
6891
|
+
"--config",
|
|
6892
|
+
"--override-config",
|
|
6893
|
+
"--remote-env",
|
|
6894
|
+
"--docker-path",
|
|
6895
|
+
"--docker-compose-path",
|
|
6896
|
+
"--log-level",
|
|
6897
|
+
"--log-format",
|
|
6898
|
+
"--terminal-columns",
|
|
6899
|
+
"--terminal-rows",
|
|
6900
|
+
"--user-data-folder"
|
|
6901
|
+
];
|
|
6902
|
+
var FLOX_OPTIONS_WITH_A_VALUE = ["-d", "--dir", "-r", "--remote", "-m", "--mode", "-c", "--command"];
|
|
6903
|
+
var RUNNER_SYNTAX = /* @__PURE__ */ new Map([
|
|
6904
|
+
["uv", runnerSyntax(["run"], [UV_RUN_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: UV_GLOBAL_OPTIONS_WITH_A_VALUE })],
|
|
6905
|
+
["poetry", runnerSyntax(["run"], [POETRY_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: POETRY_OPTIONS_WITH_A_VALUE })],
|
|
6906
|
+
["bundle", runnerSyntax(["exec"], [[]])],
|
|
6907
|
+
["op", runnerSyntax(["run"], [OP_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: OP_OPTIONS_WITH_A_VALUE })],
|
|
6908
|
+
["dotenv", runnerSyntax(null, [DOTENV_OPTIONS_WITH_A_VALUE], { optionsWithAnOptionalValue: DOTENV_OPTIONS_WITH_AN_OPTIONAL_VALUE })],
|
|
6909
|
+
[SCRIPT, runnerSyntax(null, [SCRIPT_OPTIONS_WITH_A_VALUE], { operandsBeforeTheCommand: [1] })],
|
|
6910
|
+
["pnpm", runnerSyntax(["exec", "dlx"], [PNPM_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: PNPM_OPTIONS_WITH_A_VALUE })],
|
|
6911
|
+
["yarn", runnerSyntax(["exec", "dlx"], [YARN_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: YARN_OPTIONS_WITH_A_VALUE })],
|
|
6912
|
+
["npm", runnerSyntax(["exec", "x"], [NPM_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: NPM_OPTIONS_WITH_A_VALUE })],
|
|
6913
|
+
["pipenv", runnerSyntax(["run"], [["--python"]], { globalOptionsWithAValue: ["--python"] })],
|
|
6914
|
+
["hatch", runnerSyntax(["run"], [HATCH_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: HATCH_OPTIONS_WITH_A_VALUE })],
|
|
6915
|
+
["rye", runnerSyntax(["run"], [["--pyproject"]], { globalOptionsWithAValue: ["--pyproject"] })],
|
|
6916
|
+
["pdm", runnerSyntax(["run"], [PDM_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: PDM_OPTIONS_WITH_A_VALUE })],
|
|
6917
|
+
["direnv", runnerSyntax(["exec"], [[]], { operandsBeforeTheCommand: [1] })],
|
|
6918
|
+
["docker", runnerSyntax(["exec"], [DOCKER_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: DOCKER_OPTIONS_WITH_A_VALUE, operandsBeforeTheCommand: [1] })],
|
|
6919
|
+
["kubectl", runnerSyntax(["exec"], [KUBECTL_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: KUBECTL_OPTIONS_WITH_A_VALUE, operandsBeforeTheCommand: [1] })],
|
|
6920
|
+
["bun", runnerSyntax(["x"], [["-p", "--package"]])],
|
|
6921
|
+
["pixi", runnerSyntax(["run"], [PIXI_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: PIXI_OPTIONS_WITH_A_VALUE })],
|
|
6922
|
+
["conda", runnerSyntax(["run"], [CONDA_OPTIONS_WITH_A_VALUE])],
|
|
6923
|
+
["mamba", runnerSyntax(["run"], [CONDA_OPTIONS_WITH_A_VALUE])],
|
|
6924
|
+
["micromamba", runnerSyntax(["run"], [CONDA_OPTIONS_WITH_A_VALUE])],
|
|
6925
|
+
["asdf", runnerSyntax(["exec"], [[]])],
|
|
6926
|
+
["pipx", runnerSyntax(["run"], [PIPX_OPTIONS_WITH_A_VALUE])],
|
|
6927
|
+
["volta", runnerSyntax(["run"], [VOLTA_OPTIONS_WITH_A_VALUE])],
|
|
6928
|
+
["rbenv", runnerSyntax(["exec"], [[]])],
|
|
6929
|
+
["pyenv", runnerSyntax(["exec"], [[]])],
|
|
6930
|
+
["nodenv", runnerSyntax(["exec"], [[]])],
|
|
6931
|
+
["goenv", runnerSyntax(["exec"], [[]])],
|
|
6932
|
+
["jenv", runnerSyntax(["exec"], [[]])],
|
|
6933
|
+
["plenv", runnerSyntax(["exec"], [[]])],
|
|
6934
|
+
["nvm", runnerSyntax(["exec"], [[]], { operandsBeforeTheCommand: [0, 1] })],
|
|
6935
|
+
["devcontainer", runnerSyntax(["exec"], [DEVCONTAINER_OPTIONS_WITH_A_VALUE])],
|
|
6936
|
+
["flox", runnerSyntax(["activate"], [FLOX_OPTIONS_WITH_A_VALUE])]
|
|
6937
|
+
]);
|
|
6938
|
+
var MISE_OPTIONS_WITH_A_VALUE = ["-C", "--cd", "-E", "--env"];
|
|
6939
|
+
var endOfOptionsRunner = (subcommands, globalOptionsWithAValue = []) => ({ subcommands: new Set(subcommands), globalOptionsWithAValue: new Set(globalOptionsWithAValue) });
|
|
6940
|
+
var END_OF_OPTIONS_RUNNERS = /* @__PURE__ */ new Map([
|
|
6941
|
+
["doppler", endOfOptionsRunner(["run"], ["-p", "--project", "-c", "--config", "--token", "--scope"])],
|
|
6942
|
+
["infisical", endOfOptionsRunner(["run"], ["--domain", "--token"])],
|
|
6943
|
+
["aws-vault", endOfOptionsRunner(["exec"], ["--backend", "--keychain"])],
|
|
6944
|
+
["chamber", endOfOptionsRunner(["exec"], ["-b", "--backend"])],
|
|
6945
|
+
["mise", endOfOptionsRunner(["exec", "x"], MISE_OPTIONS_WITH_A_VALUE)],
|
|
6946
|
+
["rtx", endOfOptionsRunner(["exec", "x"], MISE_OPTIONS_WITH_A_VALUE)],
|
|
6947
|
+
["op", endOfOptionsRunner(["run"], OP_OPTIONS_WITH_A_VALUE)],
|
|
6948
|
+
["kubectl", endOfOptionsRunner(["exec", "run"], KUBECTL_OPTIONS_WITH_A_VALUE)],
|
|
6949
|
+
["oc", endOfOptionsRunner(["exec", "run"], KUBECTL_OPTIONS_WITH_A_VALUE)],
|
|
6950
|
+
["docker", endOfOptionsRunner(["exec", "compose"], DOCKER_OPTIONS_WITH_A_VALUE)],
|
|
6951
|
+
["docker-compose", endOfOptionsRunner(["exec", "run"], ["-f", "--file", "-p", "--project-name", "--env-file", "--profile"])],
|
|
6952
|
+
["podman", endOfOptionsRunner(["exec"], ["--url", "--connection", "-c", "--identity", "--root", "--runroot", "--log-level"])],
|
|
6953
|
+
["nerdctl", endOfOptionsRunner(["exec"], ["-n", "--namespace", "-a", "--address", "-H", "--host"])],
|
|
6954
|
+
["flox", endOfOptionsRunner(["activate"], FLOX_OPTIONS_WITH_A_VALUE)],
|
|
6955
|
+
["devbox", endOfOptionsRunner(["run"])],
|
|
6956
|
+
["fnm", endOfOptionsRunner(["exec"], ["--fnm-dir", "--log-level", "--node-dist-mirror", "--arch", "--version-file-strategy"])],
|
|
6957
|
+
["dotenvx", endOfOptionsRunner(["run"])],
|
|
6958
|
+
["teller", endOfOptionsRunner(["run"], ["-c", "--config"])],
|
|
6959
|
+
["berglas", endOfOptionsRunner(["exec"], ["-l", "--log-level", "--log-format"])],
|
|
6960
|
+
["nx", endOfOptionsRunner(["exec"])],
|
|
6961
|
+
["lerna", endOfOptionsRunner(["exec"], ["--loglevel"])],
|
|
6962
|
+
["stack", endOfOptionsRunner(["exec"], ["--stack-yaml", "--resolver", "--work-dir"])],
|
|
6963
|
+
["cabal", endOfOptionsRunner(["exec"], ["--project-file"])],
|
|
6964
|
+
["opam", endOfOptionsRunner(["exec"], ["--switch", "--root"])],
|
|
6965
|
+
["tox", endOfOptionsRunner(["exec"], ["-c", "--conf", "--root", "--workdir"])],
|
|
6966
|
+
["aqua", endOfOptionsRunner(["exec"], ["-c", "--config", "-l", "--log-level"])],
|
|
6967
|
+
["pixi", endOfOptionsRunner(["exec"], PIXI_OPTIONS_WITH_A_VALUE)],
|
|
6968
|
+
["hermit", endOfOptionsRunner(["exec"], ["--level"])],
|
|
6969
|
+
["toolbox", endOfOptionsRunner(["run"], ["--log-level"])],
|
|
6970
|
+
["railway", endOfOptionsRunner(["run"])],
|
|
6971
|
+
["heroku", endOfOptionsRunner(["run"])],
|
|
6972
|
+
["secrethub", endOfOptionsRunner(["run"])],
|
|
6973
|
+
["phase", endOfOptionsRunner(["run"])]
|
|
6974
|
+
]);
|
|
6975
|
+
var commandAfterARunnersEndOfOptions = ({ program, args }) => {
|
|
6976
|
+
const syntax = END_OF_OPTIONS_RUNNERS.get(basenameOf(program?.text ?? ""));
|
|
6977
|
+
const at = syntax === void 0 ? -1 : indexPastOptions(args, syntax.globalOptionsWithAValue);
|
|
6978
|
+
if (syntax === void 0 || !syntax.subcommands.has(args[at]?.text ?? "")) return [];
|
|
6979
|
+
const end = args.findIndex((arg, index) => index > at && arg.text === END_OF_OPTIONS3);
|
|
6980
|
+
const command = end === -1 ? void 0 : args[end + 1];
|
|
6981
|
+
return command === void 0 ? [] : [{ program: command, args: args.slice(end + 2) }];
|
|
6982
|
+
};
|
|
6983
|
+
var indexPastOptions = (words, optionsWithAValue) => {
|
|
6984
|
+
let index = 0;
|
|
6985
|
+
while (index < words.length && FLAG.test(words[index]?.text ?? "") && words[index]?.text !== END_OF_OPTIONS3) {
|
|
6986
|
+
index += wrapperOptionConsumesNextWord(words[index]?.text ?? "", optionsWithAValue) ? 2 : 1;
|
|
6987
|
+
}
|
|
6988
|
+
return index;
|
|
6989
|
+
};
|
|
6990
|
+
var runnerArgsOf = (args, syntax) => {
|
|
6991
|
+
if (syntax.subcommands === null) return args;
|
|
6992
|
+
const at = indexPastOptions(args, syntax.globalOptionsWithAValue);
|
|
6993
|
+
return syntax.subcommands.has(args[at]?.text ?? "") ? args.slice(at + 1) : null;
|
|
6994
|
+
};
|
|
6995
|
+
var optionalValueIsGiven = (words, index, optional) => optional.has(words[index]?.text ?? "") && !FLAG.test(words[index + 1]?.text ?? END_OF_OPTIONS3);
|
|
6996
|
+
var commandStartAfterRunnerOptions = (words, reading, optional) => {
|
|
6997
|
+
let index = 0;
|
|
6998
|
+
while (index < words.length) {
|
|
6999
|
+
const text3 = words[index]?.text ?? "";
|
|
7000
|
+
if (text3 === END_OF_OPTIONS3) return index + 1 + reading.operandsBeforeTheCommand;
|
|
7001
|
+
if (!SHELL_ENV_ASSIGNMENT.test(text3) && (!FLAG.test(text3) || text3 === STANDARD_INPUT_ARGUMENT)) break;
|
|
7002
|
+
const takesTheNextWord = wrapperOptionConsumesNextWord(text3, reading.optionsWithAValue) || optionalValueIsGiven(words, index, optional);
|
|
7003
|
+
index += takesTheNextWord ? 2 : 1;
|
|
7004
|
+
}
|
|
7005
|
+
return index + reading.operandsBeforeTheCommand;
|
|
7006
|
+
};
|
|
7007
|
+
var pastAnEndOfOptions = (words, index) => words[index]?.text === END_OF_OPTIONS3 ? index + 1 : index;
|
|
7008
|
+
var commandARunnerReadingRuns = (words, reading, syntax) => {
|
|
7009
|
+
const start = pastAnEndOfOptions(words, commandStartAfterRunnerOptions(words, reading, syntax.optionsWithAnOptionalValue));
|
|
7010
|
+
const command = words[start];
|
|
7011
|
+
return command === void 0 ? [] : [{ program: command, args: words.slice(start + 1) }];
|
|
7012
|
+
};
|
|
7013
|
+
var isANamedRunnerCall = ({ program, args }) => {
|
|
7014
|
+
const syntax = RUNNER_SYNTAX.get(basenameOf(program?.text ?? ""));
|
|
7015
|
+
return syntax !== void 0 && runnerArgsOf(args, syntax) !== null;
|
|
7016
|
+
};
|
|
7017
|
+
var runnerRunsWhatASubstitutionPrints = (segment, innermost) => segment.feedsASubstitution && isANamedRunnerCall(innermost) && commandsANamedRunnerRuns(innermost).length === 0;
|
|
7018
|
+
var commandsANamedRunnerRuns = ({ program, args }) => {
|
|
7019
|
+
const syntax = RUNNER_SYNTAX.get(basenameOf(program?.text ?? ""));
|
|
7020
|
+
const words = syntax === void 0 ? null : runnerArgsOf(args, syntax);
|
|
7021
|
+
if (syntax === void 0 || words === null) return [];
|
|
7022
|
+
return syntax.readings.flatMap((reading) => commandARunnerReadingRuns(words, reading, syntax));
|
|
7023
|
+
};
|
|
7024
|
+
var COMMAND_AFTER_AN_OPTION = /* @__PURE__ */ new Map([
|
|
7025
|
+
["nix", { subcommands: /* @__PURE__ */ new Set(["develop", "shell"]), options: /* @__PURE__ */ new Set(["-c", "--command"]) }]
|
|
7026
|
+
]);
|
|
7027
|
+
var commandAfterAnOption = ({ program, args }) => {
|
|
7028
|
+
const syntax = COMMAND_AFTER_AN_OPTION.get(basenameOf(program?.text ?? ""));
|
|
7029
|
+
if (syntax === void 0 || !args.some((arg) => syntax.subcommands.has(arg.text))) return [];
|
|
7030
|
+
const option = args.findIndex((arg) => syntax.options.has(arg.text));
|
|
7031
|
+
const command = option === -1 ? void 0 : args[option + 1];
|
|
7032
|
+
return command === void 0 ? [] : [{ program: command, args: args.slice(option + 2) }];
|
|
7033
|
+
};
|
|
7034
|
+
var PROGRAM_TEXT_THAT_RUNS_A_SUBSTITUTION = /\$\(|`/;
|
|
7035
|
+
var runnerProgramIsHidden = (invocation) => programIsHidden(invocation) || PROGRAM_TEXT_THAT_RUNS_A_SUBSTITUTION.test(invocation.program?.text ?? "");
|
|
7036
|
+
var everyReadingHidesItsProgram = (readings) => readings.length > 0 && readings.every(runnerProgramIsHidden);
|
|
7037
|
+
var SHORT_OPTION_CLUSTER_ENDING_IN_C = /^-[A-Za-z]*c$/;
|
|
7038
|
+
var COMMAND_STRING_SYNTAX = /* @__PURE__ */ new Map([
|
|
7039
|
+
[SCRIPT, { options: SCRIPT_COMMAND_STRING_OPTIONS, longOptionsWithAValue: ["--command="], cluster: SHORT_OPTION_CLUSTER_ENDING_IN_C }],
|
|
7040
|
+
["mise", { options: /* @__PURE__ */ new Set(["-c", "--command"]), longOptionsWithAValue: ["--command="], cluster: null }],
|
|
7041
|
+
["npm", { options: /* @__PURE__ */ new Set(["-c", "--call"]), longOptionsWithAValue: ["--call="], cluster: null }],
|
|
7042
|
+
["nix-shell", { options: /* @__PURE__ */ new Set(["--run", "--command"]), longOptionsWithAValue: [], cluster: null }],
|
|
7043
|
+
["flox", { options: /* @__PURE__ */ new Set(["-c", "--command"]), longOptionsWithAValue: ["--command="], cluster: null }],
|
|
7044
|
+
["doppler", { options: /* @__PURE__ */ new Set(["--command"]), longOptionsWithAValue: ["--command="], cluster: null }]
|
|
7045
|
+
]);
|
|
7046
|
+
var commandStringAt = (args, index, syntax) => {
|
|
7047
|
+
const text3 = args[index]?.text ?? "";
|
|
7048
|
+
const assignment = syntax.longOptionsWithAValue.find((option) => text3.startsWith(option));
|
|
7049
|
+
if (assignment !== void 0) return text3.slice(assignment.length);
|
|
7050
|
+
return syntax.options.has(text3) || (syntax.cluster?.test(text3) ?? false) ? args[index + 1] : void 0;
|
|
7051
|
+
};
|
|
7052
|
+
var COMMAND_STRING_OPERAND = /* @__PURE__ */ new Map([
|
|
7053
|
+
["sops", { subcommand: "exec-env", reading: wrapperSyntax(["--user"], 1) }]
|
|
7054
|
+
]);
|
|
7055
|
+
var commandStringOperandOf = ({ program, args }) => {
|
|
7056
|
+
const syntax = COMMAND_STRING_OPERAND.get(basenameOf(program?.text ?? ""));
|
|
7057
|
+
const at = syntax === void 0 ? -1 : args.findIndex((arg) => arg.text === syntax.subcommand);
|
|
7058
|
+
if (syntax === void 0 || at === -1) return [];
|
|
7059
|
+
const words = args.slice(at + 1);
|
|
7060
|
+
const operand = words[commandStartAfterWrapper(words, syntax.reading)];
|
|
7061
|
+
return operand === void 0 ? [] : [operand];
|
|
7062
|
+
};
|
|
7063
|
+
var isACommandString = (value) => value !== void 0;
|
|
7064
|
+
var commandStringExpands = (value) => typeof value !== "string" && value.expands;
|
|
7065
|
+
var commandStringText = (value) => typeof value === "string" ? value : value.text;
|
|
7066
|
+
var commandStringOptionsOf = ({ program, args }) => {
|
|
7067
|
+
const syntax = COMMAND_STRING_SYNTAX.get(basenameOf(program?.text ?? ""));
|
|
7068
|
+
return syntax === void 0 ? [] : args.map((_, index) => commandStringAt(args, index, syntax)).filter(isACommandString);
|
|
7069
|
+
};
|
|
7070
|
+
var commandStringsARunnerRuns = (invocation) => {
|
|
7071
|
+
const values = [...commandStringOptionsOf(invocation), ...commandStringOperandOf(invocation)];
|
|
7072
|
+
if (values.length === 0) return NO_INLINE_SCRIPT;
|
|
7073
|
+
if (values.some(commandStringExpands)) return HIDDEN_INLINE_SCRIPT;
|
|
7074
|
+
return { kind: "readable", scripts: values.map(commandStringText) };
|
|
7075
|
+
};
|
|
7076
|
+
var MAX_SHELL_FUNCTIONS_READ = 8;
|
|
7077
|
+
var SHELL_FUNCTION_HEADER = /(?:^|[;&|\n(]|\s)(?:function\s+([A-Za-z_][\w.-]*)\s*(?:\(\s*\))?|([A-Za-z_][\w.-]*)\s*\(\s*\))\s*\{/g;
|
|
7078
|
+
var OPENING_BRACE = "{";
|
|
7079
|
+
var CLOSING_BRACE = "}";
|
|
7080
|
+
var indexOfTheMatchingBrace = (visible, opening) => {
|
|
7081
|
+
let depth = 0;
|
|
7082
|
+
for (let index = opening; index < visible.length; index += 1) {
|
|
7083
|
+
if (visible[index] === OPENING_BRACE) depth += 1;
|
|
7084
|
+
if (visible[index] === CLOSING_BRACE && (depth -= 1) === 0) return index;
|
|
7085
|
+
}
|
|
7086
|
+
return -1;
|
|
7087
|
+
};
|
|
7088
|
+
var shellFunctionsDefinedIn = (command) => {
|
|
7089
|
+
const visible = shellVisibleText(command);
|
|
7090
|
+
if (visible === null || visible.length !== command.length) return [];
|
|
7091
|
+
return [...visible.matchAll(SHELL_FUNCTION_HEADER)].slice(0, MAX_SHELL_FUNCTIONS_READ + 1).flatMap((match) => {
|
|
7092
|
+
const opening = match.index + match[0].length - 1;
|
|
7093
|
+
const closing = indexOfTheMatchingBrace(visible, opening);
|
|
7094
|
+
const name = match[1] ?? match[2];
|
|
7095
|
+
return name === void 0 || closing === -1 ? [] : [{ name, body: command.slice(opening + 1, closing).trim() }];
|
|
7096
|
+
});
|
|
7097
|
+
};
|
|
7098
|
+
var segmentCalls = (segment, name) => segment.invocation.program?.text === name || innermostInvocation(segment.invocation).program?.text === name;
|
|
7099
|
+
var callsAProgramNamed = (segments, name) => segments.some((segment) => segmentCalls(segment, name));
|
|
7100
|
+
var TOO_MANY_FUNCTIONS = { kind: "too_many" };
|
|
7101
|
+
var bodiesOfFunctionsCalledIn = (command, segments) => {
|
|
7102
|
+
const defined = shellFunctionsDefinedIn(command);
|
|
7103
|
+
if (defined.length > MAX_SHELL_FUNCTIONS_READ) return TOO_MANY_FUNCTIONS;
|
|
7104
|
+
return { kind: "readable", bodies: defined.filter((fn) => fn.body.length > 0 && callsAProgramNamed(segments, fn.name)).map((fn) => fn.body) };
|
|
7105
|
+
};
|
|
7106
|
+
var runnerReadingOf = (innermost) => {
|
|
7107
|
+
const named = [...commandsANamedRunnerRuns(innermost), ...commandAfterAnOption(innermost)];
|
|
7108
|
+
const afterEndOfOptions = commandAfterARunnersEndOfOptions(innermost);
|
|
7109
|
+
const scripts = commandStringsARunnerRuns(innermost);
|
|
7110
|
+
if (scripts.kind === "hidden" || everyReadingHidesItsProgram(named)) return HIDDEN_INLINE_SCRIPT;
|
|
7111
|
+
const fromScript = scripts.kind === "readable" ? scripts.scripts : [];
|
|
7112
|
+
const commands = [.../* @__PURE__ */ new Set([...fromScript, ...named.map(verbatimInvocationText), ...afterEndOfOptions.map(verbatimInvocationText)])];
|
|
7113
|
+
return commands.length === 0 ? NO_INLINE_SCRIPT : { kind: "readable", scripts: commands };
|
|
7114
|
+
};
|
|
7115
|
+
var MAX_SPELLED_FORMS = 4096;
|
|
7116
|
+
var markTruncated = (accumulator) => {
|
|
7117
|
+
accumulator.hidesWhatItRuns = true;
|
|
7118
|
+
accumulator.truncated = true;
|
|
7119
|
+
};
|
|
7120
|
+
var addSpelledForm = (accumulator, form) => {
|
|
7121
|
+
if (accumulator.forms.length >= MAX_SPELLED_FORMS) {
|
|
7122
|
+
markTruncated(accumulator);
|
|
7123
|
+
return;
|
|
7124
|
+
}
|
|
7125
|
+
accumulator.forms.push(form);
|
|
7126
|
+
};
|
|
7127
|
+
var addSpelledForms = (accumulator, forms) => {
|
|
7128
|
+
for (const form of forms) addSpelledForm(accumulator, form);
|
|
7129
|
+
};
|
|
7130
|
+
var spellCommandInto = (accumulator, command, depth, reach) => {
|
|
7131
|
+
if (depth > MAX_SPELLING_DEPTH) {
|
|
7132
|
+
accumulator.hidesWhatItRuns = true;
|
|
7133
|
+
return;
|
|
7134
|
+
}
|
|
7135
|
+
if (accumulator.forms.length >= MAX_SPELLED_FORMS) {
|
|
7136
|
+
markTruncated(accumulator);
|
|
7137
|
+
return;
|
|
7138
|
+
}
|
|
7139
|
+
accumulator.hidesWhatItRuns ||= runsASubstitutionAsAProgram(command);
|
|
7140
|
+
const spellNested = (nested) => {
|
|
7141
|
+
addSpelledForm(accumulator, nested);
|
|
7142
|
+
spellCommandInto(accumulator, nested, depth + 1, reach);
|
|
7143
|
+
};
|
|
7144
|
+
const segments = spelledSegmentsOf(command);
|
|
7145
|
+
for (const segment of segments) {
|
|
6756
7146
|
const innermost = innermostInvocation(segment.invocation);
|
|
6757
7147
|
const scripts = inlineScriptsOf(innermost, segment.heredocs);
|
|
6758
|
-
|
|
6759
|
-
|
|
6760
|
-
|
|
6761
|
-
|
|
6762
|
-
|
|
6763
|
-
|
|
6764
|
-
|
|
7148
|
+
addSpelledForm(accumulator, segment.text);
|
|
7149
|
+
addSpelledForms(accumulator, spellingsOfAnInvocation(segment.invocation, innermost));
|
|
7150
|
+
accumulator.hidesWhatItRuns ||= segmentHidesWhatItRuns(segment, innermost, scripts);
|
|
7151
|
+
for (const nested of commandsNestedIn(innermost, scripts)) spellNested(nested);
|
|
7152
|
+
const ranOnBehalf = readsCommandRunners(reach) ? runnerReadingOf(innermost) : NO_INLINE_SCRIPT;
|
|
7153
|
+
accumulator.hidesWhatItRuns ||= ranOnBehalf.kind === "hidden" || readsCommandRunners(reach) && runnerRunsWhatASubstitutionPrints(segment, innermost);
|
|
7154
|
+
if (ranOnBehalf.kind === "readable") for (const nested of ranOnBehalf.scripts) spellNested(nested);
|
|
7155
|
+
}
|
|
7156
|
+
if (!readsCommandRunners(reach) || depth > 0) return;
|
|
7157
|
+
const functions = bodiesOfFunctionsCalledIn(command, segments);
|
|
7158
|
+
accumulator.hidesWhatItRuns ||= functions.kind === "too_many";
|
|
7159
|
+
if (functions.kind === "readable") for (const body of functions.bodies) spellNested(body);
|
|
7160
|
+
};
|
|
7161
|
+
var commandSpellings = (command, reach) => {
|
|
7162
|
+
const accumulator = { forms: [], hidesWhatItRuns: false, truncated: false };
|
|
7163
|
+
try {
|
|
7164
|
+
spellCommandInto(accumulator, command, 0, reach);
|
|
7165
|
+
} catch {
|
|
7166
|
+
return SPELLINGS_OF_AN_UNREADABLE_COMMAND;
|
|
6765
7167
|
}
|
|
6766
|
-
|
|
7168
|
+
const completeness = accumulator.truncated ? "truncated" : "complete";
|
|
7169
|
+
return { forms: accumulator.forms, hidesWhatItRuns: accumulator.hidesWhatItRuns, completeness };
|
|
6767
7170
|
};
|
|
6768
|
-
var commandSpellings = (command) => commandSpellingsAt(command, 0);
|
|
6769
7171
|
var passesItsInputToSomethingThatCanAct = (segment) => segment.readsInput && !isSafeReadOnlyCommand(verbatimInvocationText(segment.invocation));
|
|
6770
7172
|
var feedsTextToSomethingThatCanAct = (command) => roughSegmentsOf(command).some(passesItsInputToSomethingThatCanAct);
|
|
7173
|
+
var NOT_READ_IN_FULL = { kind: "not_read_in_full" };
|
|
6771
7174
|
var readingsThatCanAct = (command) => {
|
|
6772
|
-
const spellings = commandSpellings(command)
|
|
6773
|
-
|
|
7175
|
+
const spellings = commandSpellings(command, SPELLS_COMMAND_RUNNERS_TOO);
|
|
7176
|
+
if (!spellingsAreComplete(spellings)) return NOT_READ_IN_FULL;
|
|
7177
|
+
return { kind: "read", readings: feedsTextToSomethingThatCanAct(command) ? [command, ...spellings.forms] : spellings.forms };
|
|
7178
|
+
};
|
|
7179
|
+
var aReadingIsDestructive = (toolName, command) => {
|
|
7180
|
+
const readings = readingsThatCanAct(command);
|
|
7181
|
+
return readings.kind === "not_read_in_full" || readings.readings.some((reading) => classifyDecisionRisk(toolNameForAPosixReading(toolName), reading) === "destructive");
|
|
6774
7182
|
};
|
|
6775
7183
|
var withoutSessionToolGrants = (config) => ({
|
|
6776
7184
|
...config,
|
|
@@ -7791,20 +8199,20 @@ var coordinationFloorApplies = (toolName, rank) => readsOrStopsItsOwnWork(toolNa
|
|
|
7791
8199
|
var argumentsAsWritten = (args) => ({ forms: args, hidesWhatItRuns: false });
|
|
7792
8200
|
var namesAnArgumentOf = (pattern, toolName) => pattern.startsWith(`${toolName}(`);
|
|
7793
8201
|
var isSpelledOut = (form) => form.length > 0;
|
|
7794
|
-
var restrictionReadingOf = (restrictingPatterns, toolName, args) => {
|
|
8202
|
+
var restrictionReadingOf = (restrictingPatterns, toolName, args, reach) => {
|
|
7795
8203
|
const command = toolName in POLICY_COMMAND_KEYS ? args[0] : void 0;
|
|
7796
8204
|
if (command === void 0 || !restrictingPatterns.some((pattern) => namesAnArgumentOf(pattern, toolName))) {
|
|
7797
8205
|
return argumentsAsWritten(args);
|
|
7798
8206
|
}
|
|
7799
|
-
const spellings = commandSpellings(command);
|
|
8207
|
+
const spellings = commandSpellings(command, reach);
|
|
7800
8208
|
return {
|
|
7801
8209
|
forms: [.../* @__PURE__ */ new Set([...args, ...spellings.forms.filter(isSpelledOut)])],
|
|
7802
8210
|
hidesWhatItRuns: POSIX_SHELL_TOOLS.has(toolName) && spellings.hidesWhatItRuns
|
|
7803
8211
|
};
|
|
7804
8212
|
};
|
|
7805
|
-
var formsOfEveryCandidate = (restrictingPatterns, toolName, args) => [...new Set(args.flatMap((arg) => restrictionReadingOf(restrictingPatterns, toolName, [arg]).forms))];
|
|
8213
|
+
var formsOfEveryCandidate = (restrictingPatterns, toolName, args) => [...new Set(args.flatMap((arg) => restrictionReadingOf(restrictingPatterns, toolName, [arg], SPELLS_COMMAND_RUNNERS_TOO).forms))];
|
|
7806
8214
|
var restrictingPatternsOf = (policies) => policies.filter(restricts).map((policy) => policy.tool);
|
|
7807
|
-
var policyReadingOf = (policies, toolName, args) => restrictionReadingOf(restrictingPatternsOf(policies), toolName, args);
|
|
8215
|
+
var policyReadingOf = (policies, toolName, args, reach) => restrictionReadingOf(restrictingPatternsOf(policies), toolName, args, reach);
|
|
7808
8216
|
var stricterRule = (current, challenger) => current !== void 0 && (challenger === void 0 || comparePolicyStrictness(current.policy, challenger.policy) > 0) ? current : challenger;
|
|
7809
8217
|
var restrictsAnArgumentOf = (policy, toolName) => restricts(policy) && namesAnArgumentOf(policy.tool, toolName);
|
|
7810
8218
|
var strictestRuleNamingAnArgument = (pool, toolName, repoKey, sessionId) => pool.filter((policy) => restrictsAnArgumentOf(policy, toolName) && appliesToThisCall(policy, repoKey, sessionId)).reduce((strictest, policy) => stricterRule(strictest, { policy, rank: "prefix" }), void 0);
|
|
@@ -7815,7 +8223,7 @@ var governingRuleForReading = (pool, toolName, args, reading, repoKey, sessionId
|
|
|
7815
8223
|
var resolveAutoResolveOrigin = (config, toolName, toolInput, cwd, repoKey, sessionId) => {
|
|
7816
8224
|
const args = toolInput ? policyArgForms(toolName, toolInput, cwd) : [];
|
|
7817
8225
|
const arg = args[0];
|
|
7818
|
-
const reading = policyReadingOf(config.policies, toolName, args);
|
|
8226
|
+
const reading = policyReadingOf(config.policies, toolName, args, SPELLS_COMMAND_RUNNERS_TOO);
|
|
7819
8227
|
const rank = governingRuleForReading(config.policies, toolName, args, reading, repoKey, sessionId)?.rank;
|
|
7820
8228
|
if (shellReadOnlyFloorApplies(toolName, arg, rank) || coordinationFloorApplies(toolName, rank)) {
|
|
7821
8229
|
return DECISION_ORIGIN.safeReadonly;
|
|
@@ -7845,12 +8253,12 @@ var unmatchedPolicyOf = (config, toolName) => ({
|
|
|
7845
8253
|
});
|
|
7846
8254
|
var sessionToolGrantCannotCover = (toolName, arg, toolInput) => typeof arg === "string" && commandNeedsAPerson(toolName, arg) || parseMcpToolName(toolName) !== void 0 && (toolInput === void 0 || !mcpToolInputOnlyReads(toolName, toolInput));
|
|
7847
8255
|
var stricterOfTheReadings = (asWritten, asSpelled, unmatched) => comparePolicyStrictness(asWritten?.policy ?? unmatched, asSpelled?.policy ?? unmatched) > 0 ? asWritten : asSpelled;
|
|
7848
|
-
var
|
|
8256
|
+
var resolvePolicyReading = (reach, config, toolName, modeOverride, toolInput, cwd, repoKey, sessionId) => {
|
|
7849
8257
|
const args = toolInput ? policyArgForms(toolName, toolInput, cwd) : [];
|
|
7850
8258
|
const arg = args[0];
|
|
7851
8259
|
const unmatched = unmatchedPolicyOf(config, toolName);
|
|
7852
8260
|
const asWritten = layeredGoverningRule(config, toolName, args, argumentsAsWritten(args), repoKey, sessionId);
|
|
7853
|
-
const asSpelled = layeredGoverningRule(config, toolName, args, policyReadingOf(config.policies, toolName, args), repoKey, sessionId);
|
|
8261
|
+
const asSpelled = layeredGoverningRule(config, toolName, args, policyReadingOf(config.policies, toolName, args, reach), repoKey, sessionId);
|
|
7854
8262
|
const match = stricterOfTheReadings(asWritten, asSpelled, unmatched);
|
|
7855
8263
|
let base = match?.policy ?? unmatched;
|
|
7856
8264
|
const governedBySpecificRule = isSpecificArgumentRank(match?.rank);
|
|
@@ -7860,7 +8268,7 @@ var resolvePolicy = (config, toolName, modeOverride, toolInput, cwd, repoKey, se
|
|
|
7860
8268
|
const aRuleNamesASpelling = isSpecificArgumentRank(asSpelled?.rank);
|
|
7861
8269
|
const approvedByReadOnlyFloor = !isAutoDeny(base) && (shellReadOnlyFloorApplies(toolName, arg, match?.rank) && !aRuleNamesASpelling || coordinationFloorApplies(toolName, match?.rank));
|
|
7862
8270
|
if (governedBySessionToolGrant && !approvedByReadOnlyFloor && sessionToolGrantCannotCover(toolName, arg, toolInput)) {
|
|
7863
|
-
return
|
|
8271
|
+
return resolvePolicyReading(reach, withoutSessionToolGrants(config), toolName, modeOverride, toolInput, cwd, repoKey, sessionId);
|
|
7864
8272
|
}
|
|
7865
8273
|
if (approvedByReadOnlyFloor) {
|
|
7866
8274
|
base = autoApprove(base.tool);
|
|
@@ -7881,6 +8289,29 @@ var resolvePolicy = (config, toolName, modeOverride, toolInput, cwd, repoKey, se
|
|
|
7881
8289
|
}
|
|
7882
8290
|
return base;
|
|
7883
8291
|
};
|
|
8292
|
+
var resolvePolicy = (config, toolName, modeOverride, toolInput, cwd, repoKey, sessionId) => {
|
|
8293
|
+
const withoutRunners = resolvePolicyReading(SPELLS_WITHOUT_COMMAND_RUNNERS, config, toolName, modeOverride, toolInput, cwd, repoKey, sessionId);
|
|
8294
|
+
const withRunners = resolvePolicyReading(SPELLS_COMMAND_RUNNERS_TOO, config, toolName, modeOverride, toolInput, cwd, repoKey, sessionId);
|
|
8295
|
+
return strictestReadingOf(withRunners, withoutRunners);
|
|
8296
|
+
};
|
|
8297
|
+
var VERDICT_RESTRAINT = { allow: 0, requires_human: 1, deny: 2 };
|
|
8298
|
+
var verdictRestraint = (policy) => VERDICT_RESTRAINT[verdictForPolicy(policy)];
|
|
8299
|
+
var asksAtLeastAsHard = (policy, than) => restraintRank(policy) >= restraintRank(than) && TIMEOUT_ACTION_STRICTNESS[policy.timeoutAction] >= TIMEOUT_ACTION_STRICTNESS[than.timeoutAction] && policy.timeoutSeconds >= than.timeoutSeconds && policy.pushFirstSeconds <= than.pushFirstSeconds;
|
|
8300
|
+
var stricterModeOf = (policy, other) => restraintRank(other) > restraintRank(policy) ? other.mode : policy.mode;
|
|
8301
|
+
var stricterTimeoutActionOf = (policy, other) => TIMEOUT_ACTION_STRICTNESS[other.timeoutAction] > TIMEOUT_ACTION_STRICTNESS[policy.timeoutAction] ? other.timeoutAction : policy.timeoutAction;
|
|
8302
|
+
var askingHardestOfBoth = (policy, other) => ({
|
|
8303
|
+
...policy,
|
|
8304
|
+
mode: stricterModeOf(policy, other),
|
|
8305
|
+
timeoutAction: stricterTimeoutActionOf(policy, other),
|
|
8306
|
+
timeoutSeconds: Math.max(policy.timeoutSeconds, other.timeoutSeconds),
|
|
8307
|
+
pushFirstSeconds: Math.min(policy.pushFirstSeconds, other.pushFirstSeconds)
|
|
8308
|
+
});
|
|
8309
|
+
var strictestReadingOf = (withRunners, withoutRunners) => {
|
|
8310
|
+
const verdicts = verdictRestraint(withRunners) - verdictRestraint(withoutRunners);
|
|
8311
|
+
if (verdicts !== 0) return verdicts > 0 ? withRunners : withoutRunners;
|
|
8312
|
+
if (verdictForPolicy(withoutRunners) !== "requires_human" || asksAtLeastAsHard(withoutRunners, withRunners)) return withoutRunners;
|
|
8313
|
+
return asksAtLeastAsHard(withRunners, withoutRunners) ? withRunners : askingHardestOfBoth(withoutRunners, withRunners);
|
|
8314
|
+
};
|
|
7884
8315
|
var restraintRank = (policy) => {
|
|
7885
8316
|
if (isAutoDeny(policy)) return 4;
|
|
7886
8317
|
if (isAutoApprove(policy)) return 0;
|
|
@@ -8161,7 +8592,7 @@ var everyCommandSegmentGranted = (rules, toolName, command) => {
|
|
|
8161
8592
|
return segments !== null && segments.every((segment) => isSafeReadOnlyCommand(segment) || anyRuleGrants(rules, toolName, [segment]));
|
|
8162
8593
|
};
|
|
8163
8594
|
var agentRuleReadingOf = (rules, toolName, args) => {
|
|
8164
|
-
const reading = restrictionReadingOf([...rules.ask, ...rules.deny], toolName, args);
|
|
8595
|
+
const reading = restrictionReadingOf([...rules.ask, ...rules.deny], toolName, args, SPELLS_COMMAND_RUNNERS_TOO);
|
|
8165
8596
|
const command = toolName in POLICY_COMMAND_KEYS ? args[0] : void 0;
|
|
8166
8597
|
const normalized = command === void 0 ? null : normalizedCommand(command);
|
|
8167
8598
|
return normalized === null ? reading : { ...reading, forms: [...reading.forms, normalized] };
|
|
@@ -8195,7 +8626,7 @@ var aChosenRuleGoverns = (input, counts = everyRule) => {
|
|
|
8195
8626
|
if (routes === null) return true;
|
|
8196
8627
|
return input.toolInputs.some((toolInput) => {
|
|
8197
8628
|
const args = policyArgForms(input.toolName, toolInput, input.cwd);
|
|
8198
|
-
const reading = policyReadingOf(chosen, input.toolName, args);
|
|
8629
|
+
const reading = policyReadingOf(chosen, input.toolName, args, SPELLS_COMMAND_RUNNERS_TOO);
|
|
8199
8630
|
const governing = governingRuleForReading(chosen, input.toolName, args, reading, input.repoKey, input.sessionId);
|
|
8200
8631
|
return governing !== void 0 && counts(governing.policy) || findBestRoute(routes, input.toolName, args, input.repoKey) !== void 0;
|
|
8201
8632
|
});
|
|
@@ -8635,6 +9066,11 @@ export {
|
|
|
8635
9066
|
hookActivationResult,
|
|
8636
9067
|
CLIENT_REPORT_PATH,
|
|
8637
9068
|
clientContextHeaders,
|
|
9069
|
+
CREDENTIAL_REJECTION_HEADER,
|
|
9070
|
+
CREDENTIAL_REJECTED,
|
|
9071
|
+
CREDENTIAL_REJECTION_STATUS,
|
|
9072
|
+
MCP_CREDENTIAL_REJECTION_BODY,
|
|
9073
|
+
responseRejectsCredential,
|
|
8638
9074
|
TOOL_FAILURE_CODES,
|
|
8639
9075
|
isToolErrorResult,
|
|
8640
9076
|
toolFailureCodeOfResult,
|
|
@@ -8646,6 +9082,9 @@ export {
|
|
|
8646
9082
|
readSetupAgentFailures,
|
|
8647
9083
|
isSetupConnectMode,
|
|
8648
9084
|
readSetupOutcomeProperties,
|
|
9085
|
+
POLICY_REQUEST_CAPABILITIES_HEADER,
|
|
9086
|
+
CLI_POLICY_REQUEST_CAPABILITIES,
|
|
9087
|
+
policyRequestCapabilitiesHeaderValue,
|
|
8649
9088
|
DECLINED_AGENTS_FILE,
|
|
8650
9089
|
parseDeclinedAgents,
|
|
8651
9090
|
serializeDeclinedAgents,
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
keyCheckFromResponse
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OECCPPO6.js";
|
|
4
4
|
import {
|
|
5
5
|
installNetworkDefaults
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5RVL2CQK.js";
|
|
7
|
+
import {
|
|
8
|
+
fetchAsCredential
|
|
9
|
+
} from "./chunk-PYAPWXVP.js";
|
|
7
10
|
import {
|
|
8
11
|
getBaseUrl
|
|
9
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-O76PTPKP.js";
|
|
10
13
|
import {
|
|
11
14
|
isRecord,
|
|
12
15
|
isToolErrorResult,
|
|
13
16
|
toolFailureCodeOfResult
|
|
14
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-DZE26BID.js";
|
|
15
18
|
|
|
16
19
|
// src/retry.ts
|
|
17
20
|
var isRetryable = (err) => {
|
|
@@ -105,12 +108,12 @@ var sendMcpRequest = async (apiKey, message, options = {}) => {
|
|
|
105
108
|
if (options.sessionId) {
|
|
106
109
|
headers["Mcp-Session-Id"] = options.sessionId;
|
|
107
110
|
}
|
|
108
|
-
const response = await
|
|
111
|
+
const response = await fetchAsCredential(apiKey, `${baseUrl}/api/mcp/mcp`, {
|
|
109
112
|
method: "POST",
|
|
110
113
|
headers,
|
|
111
114
|
body: JSON.stringify(message),
|
|
112
115
|
signal: options.timeoutMs ? AbortSignal.any([AbortSignal.timeout(options.timeoutMs), ...options.signal ? [options.signal] : []]) : options.signal
|
|
113
|
-
});
|
|
116
|
+
}, fetchFn);
|
|
114
117
|
const lock = response.ok ? null : await keyCheckFromResponse(response, baseUrl);
|
|
115
118
|
if (lock?.kind === "locked") throw new SubscriptionRequiredError(lock.plan, lock.upgradeUrl);
|
|
116
119
|
const body = await response.text();
|