pushary 1.9.110 → 1.9.112
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-4MS4CPKY.js → api-3AWH6PR6.js} +11 -11
- package/dist/bin/pushary-audit.js +3 -3
- package/dist/bin/pushary-bell-hook.js +27 -27
- package/dist/bin/pushary-bell.js +10 -10
- package/dist/bin/pushary-claude.js +25 -25
- 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 -32
- package/dist/bin/pushary-codex-session.js +8 -8
- package/dist/bin/pushary-codex.js +15 -15
- package/dist/bin/pushary-connect.js +28 -28
- package/dist/bin/pushary-cowork.js +5 -5
- package/dist/bin/pushary-daemon.js +66 -484
- package/dist/bin/pushary-disconnect.js +27 -27
- package/dist/bin/pushary-display-hook.js +17 -17
- package/dist/bin/pushary-doctor.js +42 -42
- package/dist/bin/pushary-elicitation-hook.js +27 -27
- package/dist/bin/pushary-gemini-bridge.js +15 -15
- package/dist/bin/pushary-gemini-hook.js +29 -29
- package/dist/bin/pushary-hook.js +32 -32
- package/dist/bin/pushary-login.js +21 -21
- package/dist/bin/pushary-logout.js +26 -26
- package/dist/bin/pushary-mcp.js +12 -12
- package/dist/bin/pushary-mode.js +15 -15
- package/dist/bin/pushary-notification-hook.js +26 -26
- package/dist/bin/pushary-opencode-hook.js +28 -28
- package/dist/bin/pushary-permission-denied-hook.js +32 -32
- package/dist/bin/pushary-permission-hook.js +32 -32
- package/dist/bin/pushary-post-hook.js +26 -26
- package/dist/bin/pushary-prompt-hook.js +26 -26
- package/dist/bin/pushary-session-end-hook.js +26 -26
- package/dist/bin/pushary-session-start-hook.js +35 -35
- package/dist/bin/pushary-setup.js +61 -47
- package/dist/bin/pushary-stats.js +5 -5
- package/dist/bin/pushary-status.js +32 -32
- package/dist/bin/pushary-stop-hook.js +26 -26
- package/dist/bin/pushary-stopfailure-hook.js +26 -26
- package/dist/bin/pushary-suggestions.js +15 -15
- package/dist/bin/pushary-transcript-register.js +17 -17
- package/dist/bin/pushary-transcripts.js +25 -25
- package/dist/bin/pushary-upgrade.js +40 -40
- package/dist/bin/pushary-wait.js +15 -15
- package/dist/bin/pushary.js +7 -7
- package/dist/{chunk-WEWTT7FE.js → chunk-2SCXLYWI.js} +1 -1
- package/dist/{chunk-NMSRA7QO.js → chunk-2Y2HEOT6.js} +459 -28
- package/dist/{chunk-I2LPRMDP.js → chunk-3JCT4ABX.js} +34 -13
- package/dist/{chunk-ZCFPKN72.js → chunk-4D53JUQC.js} +4 -4
- package/dist/{chunk-HENHPRJN.js → chunk-5CHFR4SM.js} +6 -6
- package/dist/{chunk-AZBKSMYC.js → chunk-5HEKYLZD.js} +1 -1
- package/dist/{chunk-LJH2QDF3.js → chunk-5TWYZGZY.js} +10 -10
- package/dist/{chunk-T72BV3CU.js → chunk-66FYIYTH.js} +4 -4
- package/dist/{chunk-2U54YY4M.js → chunk-6DWWTT2K.js} +3 -3
- package/dist/{chunk-JPR4S254.js → chunk-7M5QJE24.js} +3 -3
- package/dist/{chunk-QYBQCMRP.js → chunk-BATGR3LA.js} +1 -1
- package/dist/{chunk-S7ZX7V5S.js → chunk-BI7NKEEZ.js} +1 -1
- package/dist/{chunk-NGZB5BVO.js → chunk-BJ6INBM6.js} +6 -6
- package/dist/{chunk-2MJL3ZVW.js → chunk-BNZOA7RL.js} +1 -1
- package/dist/{chunk-FBDUY6RN.js → chunk-BS3IFLU4.js} +1 -1
- package/dist/{chunk-JDIWIRUN.js → chunk-BSZNW4BV.js} +6 -6
- package/dist/{chunk-MZDFTXXO.js → chunk-D37U7BKX.js} +1 -1
- package/dist/{chunk-NBNWMQH4.js → chunk-D6KWDBL5.js} +3 -3
- package/dist/{chunk-5RWBSMCI.js → chunk-DO63NPJX.js} +18 -13
- package/dist/{chunk-M6EYOBLJ.js → chunk-DRXRTLL4.js} +5 -5
- package/dist/{chunk-UWQKGWBF.js → chunk-EKIA5CSV.js} +1 -1
- package/dist/{chunk-KAG2BWDB.js → chunk-F7F5PTQE.js} +6 -6
- package/dist/{chunk-TTDJHOYY.js → chunk-FF3UYU76.js} +3 -3
- package/dist/{chunk-YLLQZ6MR.js → chunk-FUFJKR53.js} +2 -2
- package/dist/{chunk-DLS43QDO.js → chunk-FWFOABQJ.js} +1 -1
- package/dist/{chunk-G2TL4OEY.js → chunk-GJWBVRPF.js} +1 -1
- package/dist/{chunk-PKN4XIBP.js → chunk-HNR23BLB.js} +2 -2
- package/dist/{chunk-3OLVEVGW.js → chunk-IAI6ZRVA.js} +6 -6
- package/dist/{chunk-TR6AJV4Z.js → chunk-IFJ3XS2R.js} +2 -2
- package/dist/{chunk-WKXSLMKC.js → chunk-J3THYTYM.js} +4 -4
- package/dist/{chunk-JMQORTFD.js → chunk-JG75WTA6.js} +2 -2
- package/dist/{chunk-GOUUFBBP.js → chunk-JY2QQNS4.js} +3 -3
- package/dist/{chunk-KS3OJ4C2.js → chunk-KBPUTWVR.js} +2 -2
- package/dist/{chunk-MOBSQM4B.js → chunk-KJFCQ5I5.js} +15 -3
- package/dist/{chunk-DZMKNP3I.js → chunk-KSPVTLCC.js} +1 -1
- package/dist/{chunk-FE4CSARF.js → chunk-KZ56PDQ2.js} +3 -3
- package/dist/{chunk-6ZPGNVXS.js → chunk-LWVOQZ24.js} +3 -3
- package/dist/{chunk-3FQTC27T.js → chunk-M52Q62SO.js} +7 -7
- package/dist/{chunk-WGQIJJIS.js → chunk-M6U4CXYS.js} +1 -1
- package/dist/chunk-MMHO6RWH.js +454 -0
- package/dist/{chunk-DP62DH2Q.js → chunk-MQTXIY32.js} +6 -6
- package/dist/{chunk-XNMSVXB4.js → chunk-MZOJR4TO.js} +3 -3
- package/dist/{chunk-FLH5MJOS.js → chunk-O465JWZH.js} +3 -3
- package/dist/{chunk-3QZSG2L4.js → chunk-OL5DDV6T.js} +1 -1
- package/dist/{chunk-CTBH3E3Z.js → chunk-OW3WQWBA.js} +2 -2
- package/dist/{chunk-CUOFHW7F.js → chunk-OXME4ZAD.js} +4 -4
- package/dist/{chunk-TKXM3QYK.js → chunk-P27ZXTQ6.js} +2 -2
- package/dist/{chunk-DSA5E7IB.js → chunk-PDB5DALK.js} +5 -5
- package/dist/{chunk-E4ZZMAWF.js → chunk-PFZGAUTM.js} +1 -1
- package/dist/{chunk-TBJ4OMO4.js → chunk-PKVNCWKH.js} +5 -5
- package/dist/{chunk-2Q4V4ZP4.js → chunk-QGZ4BPFE.js} +4 -4
- package/dist/{chunk-OKZR3LFO.js → chunk-QVGVFLKO.js} +4 -4
- package/dist/{chunk-DOHQKE4Y.js → chunk-QXRW4G7Q.js} +2 -2
- package/dist/{chunk-4LRFQMTQ.js → chunk-RDUOOCAQ.js} +10 -10
- package/dist/{chunk-DQKTKMR3.js → chunk-RXIZTNVQ.js} +3 -3
- package/dist/{chunk-XF3K42EV.js → chunk-SLMDTNKA.js} +3 -3
- package/dist/{chunk-UNHXJLHP.js → chunk-SOVLQH6W.js} +5 -5
- package/dist/{chunk-S2FLLNQI.js → chunk-SZQKXQIX.js} +2 -2
- package/dist/{chunk-TJUDVI2Y.js → chunk-TC6TGMST.js} +2 -2
- package/dist/{chunk-X3ROGIHG.js → chunk-TCRITVSK.js} +1 -1
- package/dist/{chunk-AXOY7CKN.js → chunk-TFZUWGXG.js} +14 -14
- package/dist/{chunk-OJZ3CVGK.js → chunk-TTIMLMWS.js} +5 -5
- package/dist/{chunk-SQR7GGOH.js → chunk-UEXWOQWA.js} +5 -5
- package/dist/{chunk-ALA2OMOM.js → chunk-UORHVH4P.js} +1 -1
- package/dist/{chunk-5IRJERK2.js → chunk-VQ4C6Y2C.js} +2 -2
- package/dist/{chunk-NQAY6G3S.js → chunk-VTK353JE.js} +4 -4
- package/dist/{chunk-FYSQQW6Q.js → chunk-WOI2LYGL.js} +2 -2
- package/dist/{chunk-WKBXLLDY.js → chunk-WQ5FG3ED.js} +5 -5
- package/dist/{chunk-FRY3LB5N.js → chunk-YAULUCRG.js} +2 -2
- package/dist/{chunk-BCZSRQ3L.js → chunk-ZF2GMORS.js} +1 -1
- package/dist/{codex-app-cards-switch-MPIXI3DK.js → codex-app-cards-switch-XJAPXIM4.js} +11 -11
- package/dist/{codex-card-routing-YQIWKPSG.js → codex-card-routing-MT2V4TZW.js} +2 -2
- package/dist/{codex-desktop-launch-GTKUXNPD.js → codex-desktop-launch-T236LJJF.js} +1 -1
- package/dist/{codex-session-launch-AHYAAGRT.js → codex-session-launch-AHN34OHP.js} +18 -18
- package/dist/{config-XMZVS6DQ.js → config-DVOF7LRQ.js} +3 -3
- package/dist/{global-upgrade-CBBBQIWS.js → global-upgrade-RMJEXXYL.js} +9 -9
- package/dist/{identity-OQXQU2WN.js → identity-3GG54AII.js} +4 -4
- package/dist/{live-capabilities-3UHWJHLY.js → live-capabilities-AF5VHAIS.js} +4 -4
- package/dist/{paths-GMKZGF5F.js → paths-IAK4623I.js} +3 -3
- package/dist/{reapply-C3WFUQZA.js → reapply-HTAXDM76.js} +28 -28
- package/dist/src/index.js +31 -31
- package/dist/{upgrade-lock-J6MD575X.js → upgrade-lock-CNS3ST2M.js} +4 -4
- package/dist/{usage-KYQUBGEW.js → usage-GPRH7WHQ.js} +3 -3
- package/package.json +1 -1
|
@@ -3485,6 +3485,16 @@ var readSetupOutcomeProperties = (body) => {
|
|
|
3485
3485
|
};
|
|
3486
3486
|
};
|
|
3487
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
|
+
|
|
3488
3498
|
// ../contracts/src/declined-agents.ts
|
|
3489
3499
|
var DECLINED_AGENTS_FILE = "declined-agents.json";
|
|
3490
3500
|
var DECLINED_AGENTS_VERSION = 1;
|
|
@@ -4464,6 +4474,8 @@ var isSafeReadOnlyCommand = (command) => {
|
|
|
4464
4474
|
if (visibleWithoutRedirection.replace(/&&/g, " ").includes("&")) return false;
|
|
4465
4475
|
return segmentsSplitWhereVisible(blankedSafeRedirections(trimmed), visibleWithoutRedirection, READ_ONLY_SEGMENT_SEPARATOR).every((segment) => trimShellWhitespace(segment).length > 0 && isSafeSimpleCommand(segment));
|
|
4466
4476
|
};
|
|
4477
|
+
var READ_ONLY_PROGRAMS = [...SAFE_SHELL_COMMANDS, ...INSPECTED_ARGUMENT_COMMANDS];
|
|
4478
|
+
var READ_ONLY_GIT_FIRST_ARGUMENTS = [...SAFE_GIT_SUBCOMMANDS, ...GIT_READ_ONLY_BRANCH_ARGUMENTS.slice(0, 1)];
|
|
4467
4479
|
var isAutoApprove = (policy) => policy.timeoutSeconds === 0 && policy.timeoutAction === "approve";
|
|
4468
4480
|
var isAutoDeny = (policy) => policy.timeoutSeconds === 0 && policy.timeoutAction === "deny";
|
|
4469
4481
|
var verdictForPolicy = (policy) => {
|
|
@@ -6643,7 +6655,7 @@ var posixShellJudgeFor = (toolName, line = "standing_allow") => ({
|
|
|
6643
6655
|
namesAFileThatNeedsAPerson: line === "permissions_off" ? pathNeedsAPersonToChange : namesASecretPowerShellPath,
|
|
6644
6656
|
webRequestNeedsAPerson: line === "permissions_off" ? webRequestSendsDataOffThisMachine : noWebRequestNeedsAPerson
|
|
6645
6657
|
});
|
|
6646
|
-
var commandIsDestructive = (toolName, command) => shellDialectOf(toolName) === "powershell" ? powerShellCommandIsDestructive(command, posixShellJudgeFor(toolName)) :
|
|
6658
|
+
var commandIsDestructive = (toolName, command) => shellDialectOf(toolName) === "powershell" ? powerShellCommandIsDestructive(command, posixShellJudgeFor(toolName)) : aReadingIsDestructive(toolName, command);
|
|
6647
6659
|
var commandHasAConsequenceOnTheLine = (toolName, command, line) => shellDialectOf(toolName) === "powershell" ? powerShellCommandHasAVisibleConsequence(command, posixShellJudgeFor(toolName, line)) : commandHasAVisibleConsequenceAt(toolNameForAPosixReading(toolName), command, 0, line);
|
|
6648
6660
|
var commandHasAVisibleConsequence = (toolName, command) => commandHasAConsequenceOnTheLine(toolName, command, "standing_allow");
|
|
6649
6661
|
var commandHasAConsequenceWithPermissionsOff = (toolName, command) => commandHasAConsequenceOnTheLine(toolName, command, "permissions_off");
|
|
@@ -6752,30 +6764,423 @@ var spelledSegmentsOf = (command) => {
|
|
|
6752
6764
|
const parsed = readableCommandSegments(command);
|
|
6753
6765
|
return parsed === null ? roughSegmentsOf(command).map(roughSpelledSegment) : parsed.map(parsedSpelledSegment);
|
|
6754
6766
|
};
|
|
6755
|
-
var SPELLINGS_OF_AN_UNREADABLE_COMMAND = { forms: [], hidesWhatItRuns: true };
|
|
6756
|
-
var
|
|
6757
|
-
|
|
6758
|
-
|
|
6759
|
-
|
|
6760
|
-
|
|
6767
|
+
var SPELLINGS_OF_AN_UNREADABLE_COMMAND = { forms: [], hidesWhatItRuns: true, completeness: "unreadable" };
|
|
6768
|
+
var spellingsAreComplete = (spellings) => spellings.completeness === "complete";
|
|
6769
|
+
var SPELLS_WITHOUT_COMMAND_RUNNERS = "without_command_runners";
|
|
6770
|
+
var SPELLS_COMMAND_RUNNERS_TOO = "with_command_runners";
|
|
6771
|
+
var readsCommandRunners = (reach) => reach === SPELLS_COMMAND_RUNNERS_TOO;
|
|
6772
|
+
var NO_OPTIONS = /* @__PURE__ */ new Set();
|
|
6773
|
+
var runnerSyntax = (subcommands, optionReadings, { globalOptionsWithAValue = [], operandsBeforeTheCommand = [0], optionsWithAnOptionalValue = [] } = {}) => ({
|
|
6774
|
+
subcommands: subcommands === null ? null : new Set(subcommands),
|
|
6775
|
+
globalOptionsWithAValue: globalOptionsWithAValue.length === 0 ? NO_OPTIONS : new Set(globalOptionsWithAValue),
|
|
6776
|
+
optionsWithAnOptionalValue: optionsWithAnOptionalValue.length === 0 ? NO_OPTIONS : new Set(optionsWithAnOptionalValue),
|
|
6777
|
+
readings: optionReadings.flatMap((options) => operandsBeforeTheCommand.map((operands) => wrapperSyntax(options, operands)))
|
|
6778
|
+
});
|
|
6779
|
+
var UV_GLOBAL_OPTIONS_WITH_A_VALUE = [
|
|
6780
|
+
"--directory",
|
|
6781
|
+
"--project",
|
|
6782
|
+
"--cache-dir",
|
|
6783
|
+
"--config-file",
|
|
6784
|
+
"--color",
|
|
6785
|
+
"--python-preference",
|
|
6786
|
+
"--allow-insecure-host"
|
|
6787
|
+
];
|
|
6788
|
+
var UV_RUN_OPTIONS_WITH_A_VALUE = [
|
|
6789
|
+
...UV_GLOBAL_OPTIONS_WITH_A_VALUE,
|
|
6790
|
+
"--with",
|
|
6791
|
+
"--with-editable",
|
|
6792
|
+
"--with-requirements",
|
|
6793
|
+
"--python",
|
|
6794
|
+
"-p",
|
|
6795
|
+
"--package",
|
|
6796
|
+
"--extra",
|
|
6797
|
+
"--group",
|
|
6798
|
+
"--only-group",
|
|
6799
|
+
"--no-group",
|
|
6800
|
+
"--env-file",
|
|
6801
|
+
"--index",
|
|
6802
|
+
"--default-index",
|
|
6803
|
+
"--index-url",
|
|
6804
|
+
"-i",
|
|
6805
|
+
"--extra-index-url",
|
|
6806
|
+
"--find-links",
|
|
6807
|
+
"-f",
|
|
6808
|
+
"--index-strategy",
|
|
6809
|
+
"--keyring-provider",
|
|
6810
|
+
"--resolution",
|
|
6811
|
+
"--prerelease",
|
|
6812
|
+
"--exclude-newer",
|
|
6813
|
+
"--link-mode",
|
|
6814
|
+
"--config-setting",
|
|
6815
|
+
"-C",
|
|
6816
|
+
"--refresh-package",
|
|
6817
|
+
"--reinstall-package",
|
|
6818
|
+
"--upgrade-package",
|
|
6819
|
+
"-P",
|
|
6820
|
+
"--no-build-package",
|
|
6821
|
+
"--no-binary-package"
|
|
6822
|
+
];
|
|
6823
|
+
var POETRY_OPTIONS_WITH_A_VALUE = ["-C", "--directory", "-P", "--project"];
|
|
6824
|
+
var OP_OPTIONS_WITH_A_VALUE = ["--env-file", "--account", "--config", "--encoding", "--session", "--cache"];
|
|
6825
|
+
var DOTENV_OPTIONS_WITH_A_VALUE = ["-e", "-v", "-p"];
|
|
6826
|
+
var DOTENV_OPTIONS_WITH_AN_OPTIONAL_VALUE = ["-c"];
|
|
6827
|
+
var SCRIPT_COMMAND_STRING_OPTIONS = /* @__PURE__ */ new Set(["-c", "--command"]);
|
|
6828
|
+
var SCRIPT_OPTIONS_WITH_A_VALUE = [
|
|
6829
|
+
...SCRIPT_COMMAND_STRING_OPTIONS,
|
|
6830
|
+
"-t",
|
|
6831
|
+
"-T",
|
|
6832
|
+
"-E",
|
|
6833
|
+
"--echo",
|
|
6834
|
+
"-I",
|
|
6835
|
+
"--log-in",
|
|
6836
|
+
"-O",
|
|
6837
|
+
"--log-out",
|
|
6838
|
+
"-B",
|
|
6839
|
+
"--log-io",
|
|
6840
|
+
"--log-timing",
|
|
6841
|
+
"-m",
|
|
6842
|
+
"--logging-format",
|
|
6843
|
+
"-o",
|
|
6844
|
+
"--output-limit"
|
|
6845
|
+
];
|
|
6846
|
+
var SCRIPT = "script";
|
|
6847
|
+
var PNPM_OPTIONS_WITH_A_VALUE = ["-C", "--dir", "--filter", "-F", "--package", "--workspace-concurrency", "--reporter", "--loglevel"];
|
|
6848
|
+
var YARN_OPTIONS_WITH_A_VALUE = ["--cwd", "-p", "--package"];
|
|
6849
|
+
var NPM_OPTIONS_WITH_A_VALUE = ["--prefix", "-w", "--workspace", "--package", "--userconfig", "--cache", "--registry", "--loglevel"];
|
|
6850
|
+
var HATCH_OPTIONS_WITH_A_VALUE = ["-e", "--env", "-p", "--project", "--data-dir", "--cache-dir", "--config"];
|
|
6851
|
+
var PDM_OPTIONS_WITH_A_VALUE = ["-p", "--project"];
|
|
6852
|
+
var DOCKER_OPTIONS_WITH_A_VALUE = [
|
|
6853
|
+
"--context",
|
|
6854
|
+
"-H",
|
|
6855
|
+
"--host",
|
|
6856
|
+
"--config",
|
|
6857
|
+
"-l",
|
|
6858
|
+
"--log-level",
|
|
6859
|
+
"-e",
|
|
6860
|
+
"--env",
|
|
6861
|
+
"--env-file",
|
|
6862
|
+
"-u",
|
|
6863
|
+
"--user",
|
|
6864
|
+
"-w",
|
|
6865
|
+
"--workdir",
|
|
6866
|
+
"--detach-keys"
|
|
6867
|
+
];
|
|
6868
|
+
var KUBECTL_OPTIONS_WITH_A_VALUE = [
|
|
6869
|
+
"-n",
|
|
6870
|
+
"--namespace",
|
|
6871
|
+
"--context",
|
|
6872
|
+
"--kubeconfig",
|
|
6873
|
+
"--cluster",
|
|
6874
|
+
"--user",
|
|
6875
|
+
"-s",
|
|
6876
|
+
"--server",
|
|
6877
|
+
"--token",
|
|
6878
|
+
"--as",
|
|
6879
|
+
"-c",
|
|
6880
|
+
"--container",
|
|
6881
|
+
"-f",
|
|
6882
|
+
"--filename",
|
|
6883
|
+
"--pod-running-timeout"
|
|
6884
|
+
];
|
|
6885
|
+
var PIXI_OPTIONS_WITH_A_VALUE = ["-e", "--environment", "--manifest-path"];
|
|
6886
|
+
var CONDA_OPTIONS_WITH_A_VALUE = ["-n", "--name", "-p", "--prefix", "--cwd"];
|
|
6887
|
+
var PIPX_OPTIONS_WITH_A_VALUE = ["--spec", "--python", "--index-url", "--pip-args"];
|
|
6888
|
+
var VOLTA_OPTIONS_WITH_A_VALUE = ["--node", "--npm", "--yarn", "--pnpm", "--env"];
|
|
6889
|
+
var DEVCONTAINER_OPTIONS_WITH_A_VALUE = [
|
|
6890
|
+
"--workspace-folder",
|
|
6891
|
+
"--container-id",
|
|
6892
|
+
"--id-label",
|
|
6893
|
+
"--config",
|
|
6894
|
+
"--override-config",
|
|
6895
|
+
"--remote-env",
|
|
6896
|
+
"--docker-path",
|
|
6897
|
+
"--docker-compose-path",
|
|
6898
|
+
"--log-level",
|
|
6899
|
+
"--log-format",
|
|
6900
|
+
"--terminal-columns",
|
|
6901
|
+
"--terminal-rows",
|
|
6902
|
+
"--user-data-folder"
|
|
6903
|
+
];
|
|
6904
|
+
var FLOX_OPTIONS_WITH_A_VALUE = ["-d", "--dir", "-r", "--remote", "-m", "--mode", "-c", "--command"];
|
|
6905
|
+
var RUNNER_SYNTAX = /* @__PURE__ */ new Map([
|
|
6906
|
+
["uv", runnerSyntax(["run"], [UV_RUN_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: UV_GLOBAL_OPTIONS_WITH_A_VALUE })],
|
|
6907
|
+
["poetry", runnerSyntax(["run"], [POETRY_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: POETRY_OPTIONS_WITH_A_VALUE })],
|
|
6908
|
+
["bundle", runnerSyntax(["exec"], [[]])],
|
|
6909
|
+
["op", runnerSyntax(["run"], [OP_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: OP_OPTIONS_WITH_A_VALUE })],
|
|
6910
|
+
["dotenv", runnerSyntax(null, [DOTENV_OPTIONS_WITH_A_VALUE], { optionsWithAnOptionalValue: DOTENV_OPTIONS_WITH_AN_OPTIONAL_VALUE })],
|
|
6911
|
+
[SCRIPT, runnerSyntax(null, [SCRIPT_OPTIONS_WITH_A_VALUE], { operandsBeforeTheCommand: [1] })],
|
|
6912
|
+
["pnpm", runnerSyntax(["exec", "dlx"], [PNPM_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: PNPM_OPTIONS_WITH_A_VALUE })],
|
|
6913
|
+
["yarn", runnerSyntax(["exec", "dlx"], [YARN_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: YARN_OPTIONS_WITH_A_VALUE })],
|
|
6914
|
+
["npm", runnerSyntax(["exec", "x"], [NPM_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: NPM_OPTIONS_WITH_A_VALUE })],
|
|
6915
|
+
["pipenv", runnerSyntax(["run"], [["--python"]], { globalOptionsWithAValue: ["--python"] })],
|
|
6916
|
+
["hatch", runnerSyntax(["run"], [HATCH_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: HATCH_OPTIONS_WITH_A_VALUE })],
|
|
6917
|
+
["rye", runnerSyntax(["run"], [["--pyproject"]], { globalOptionsWithAValue: ["--pyproject"] })],
|
|
6918
|
+
["pdm", runnerSyntax(["run"], [PDM_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: PDM_OPTIONS_WITH_A_VALUE })],
|
|
6919
|
+
["direnv", runnerSyntax(["exec"], [[]], { operandsBeforeTheCommand: [1] })],
|
|
6920
|
+
["docker", runnerSyntax(["exec"], [DOCKER_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: DOCKER_OPTIONS_WITH_A_VALUE, operandsBeforeTheCommand: [1] })],
|
|
6921
|
+
["kubectl", runnerSyntax(["exec"], [KUBECTL_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: KUBECTL_OPTIONS_WITH_A_VALUE, operandsBeforeTheCommand: [1] })],
|
|
6922
|
+
["bun", runnerSyntax(["x"], [["-p", "--package"]])],
|
|
6923
|
+
["pixi", runnerSyntax(["run"], [PIXI_OPTIONS_WITH_A_VALUE], { globalOptionsWithAValue: PIXI_OPTIONS_WITH_A_VALUE })],
|
|
6924
|
+
["conda", runnerSyntax(["run"], [CONDA_OPTIONS_WITH_A_VALUE])],
|
|
6925
|
+
["mamba", runnerSyntax(["run"], [CONDA_OPTIONS_WITH_A_VALUE])],
|
|
6926
|
+
["micromamba", runnerSyntax(["run"], [CONDA_OPTIONS_WITH_A_VALUE])],
|
|
6927
|
+
["asdf", runnerSyntax(["exec"], [[]])],
|
|
6928
|
+
["pipx", runnerSyntax(["run"], [PIPX_OPTIONS_WITH_A_VALUE])],
|
|
6929
|
+
["volta", runnerSyntax(["run"], [VOLTA_OPTIONS_WITH_A_VALUE])],
|
|
6930
|
+
["rbenv", runnerSyntax(["exec"], [[]])],
|
|
6931
|
+
["pyenv", runnerSyntax(["exec"], [[]])],
|
|
6932
|
+
["nodenv", runnerSyntax(["exec"], [[]])],
|
|
6933
|
+
["goenv", runnerSyntax(["exec"], [[]])],
|
|
6934
|
+
["jenv", runnerSyntax(["exec"], [[]])],
|
|
6935
|
+
["plenv", runnerSyntax(["exec"], [[]])],
|
|
6936
|
+
["nvm", runnerSyntax(["exec"], [[]], { operandsBeforeTheCommand: [0, 1] })],
|
|
6937
|
+
["devcontainer", runnerSyntax(["exec"], [DEVCONTAINER_OPTIONS_WITH_A_VALUE])],
|
|
6938
|
+
["flox", runnerSyntax(["activate"], [FLOX_OPTIONS_WITH_A_VALUE])]
|
|
6939
|
+
]);
|
|
6940
|
+
var MISE_OPTIONS_WITH_A_VALUE = ["-C", "--cd", "-E", "--env"];
|
|
6941
|
+
var endOfOptionsRunner = (subcommands, globalOptionsWithAValue = []) => ({ subcommands: new Set(subcommands), globalOptionsWithAValue: new Set(globalOptionsWithAValue) });
|
|
6942
|
+
var END_OF_OPTIONS_RUNNERS = /* @__PURE__ */ new Map([
|
|
6943
|
+
["doppler", endOfOptionsRunner(["run"], ["-p", "--project", "-c", "--config", "--token", "--scope"])],
|
|
6944
|
+
["infisical", endOfOptionsRunner(["run"], ["--domain", "--token"])],
|
|
6945
|
+
["aws-vault", endOfOptionsRunner(["exec"], ["--backend", "--keychain"])],
|
|
6946
|
+
["chamber", endOfOptionsRunner(["exec"], ["-b", "--backend"])],
|
|
6947
|
+
["mise", endOfOptionsRunner(["exec", "x"], MISE_OPTIONS_WITH_A_VALUE)],
|
|
6948
|
+
["rtx", endOfOptionsRunner(["exec", "x"], MISE_OPTIONS_WITH_A_VALUE)],
|
|
6949
|
+
["op", endOfOptionsRunner(["run"], OP_OPTIONS_WITH_A_VALUE)],
|
|
6950
|
+
["kubectl", endOfOptionsRunner(["exec", "run"], KUBECTL_OPTIONS_WITH_A_VALUE)],
|
|
6951
|
+
["oc", endOfOptionsRunner(["exec", "run"], KUBECTL_OPTIONS_WITH_A_VALUE)],
|
|
6952
|
+
["docker", endOfOptionsRunner(["exec", "compose"], DOCKER_OPTIONS_WITH_A_VALUE)],
|
|
6953
|
+
["docker-compose", endOfOptionsRunner(["exec", "run"], ["-f", "--file", "-p", "--project-name", "--env-file", "--profile"])],
|
|
6954
|
+
["podman", endOfOptionsRunner(["exec"], ["--url", "--connection", "-c", "--identity", "--root", "--runroot", "--log-level"])],
|
|
6955
|
+
["nerdctl", endOfOptionsRunner(["exec"], ["-n", "--namespace", "-a", "--address", "-H", "--host"])],
|
|
6956
|
+
["flox", endOfOptionsRunner(["activate"], FLOX_OPTIONS_WITH_A_VALUE)],
|
|
6957
|
+
["devbox", endOfOptionsRunner(["run"])],
|
|
6958
|
+
["fnm", endOfOptionsRunner(["exec"], ["--fnm-dir", "--log-level", "--node-dist-mirror", "--arch", "--version-file-strategy"])],
|
|
6959
|
+
["dotenvx", endOfOptionsRunner(["run"])],
|
|
6960
|
+
["teller", endOfOptionsRunner(["run"], ["-c", "--config"])],
|
|
6961
|
+
["berglas", endOfOptionsRunner(["exec"], ["-l", "--log-level", "--log-format"])],
|
|
6962
|
+
["nx", endOfOptionsRunner(["exec"])],
|
|
6963
|
+
["lerna", endOfOptionsRunner(["exec"], ["--loglevel"])],
|
|
6964
|
+
["stack", endOfOptionsRunner(["exec"], ["--stack-yaml", "--resolver", "--work-dir"])],
|
|
6965
|
+
["cabal", endOfOptionsRunner(["exec"], ["--project-file"])],
|
|
6966
|
+
["opam", endOfOptionsRunner(["exec"], ["--switch", "--root"])],
|
|
6967
|
+
["tox", endOfOptionsRunner(["exec"], ["-c", "--conf", "--root", "--workdir"])],
|
|
6968
|
+
["aqua", endOfOptionsRunner(["exec"], ["-c", "--config", "-l", "--log-level"])],
|
|
6969
|
+
["pixi", endOfOptionsRunner(["exec"], PIXI_OPTIONS_WITH_A_VALUE)],
|
|
6970
|
+
["hermit", endOfOptionsRunner(["exec"], ["--level"])],
|
|
6971
|
+
["toolbox", endOfOptionsRunner(["run"], ["--log-level"])],
|
|
6972
|
+
["railway", endOfOptionsRunner(["run"])],
|
|
6973
|
+
["heroku", endOfOptionsRunner(["run"])],
|
|
6974
|
+
["secrethub", endOfOptionsRunner(["run"])],
|
|
6975
|
+
["phase", endOfOptionsRunner(["run"])]
|
|
6976
|
+
]);
|
|
6977
|
+
var commandAfterARunnersEndOfOptions = ({ program, args }) => {
|
|
6978
|
+
const syntax = END_OF_OPTIONS_RUNNERS.get(basenameOf(program?.text ?? ""));
|
|
6979
|
+
const at = syntax === void 0 ? -1 : indexPastOptions(args, syntax.globalOptionsWithAValue);
|
|
6980
|
+
if (syntax === void 0 || !syntax.subcommands.has(args[at]?.text ?? "")) return [];
|
|
6981
|
+
const end = args.findIndex((arg, index) => index > at && arg.text === END_OF_OPTIONS3);
|
|
6982
|
+
const command = end === -1 ? void 0 : args[end + 1];
|
|
6983
|
+
return command === void 0 ? [] : [{ program: command, args: args.slice(end + 2) }];
|
|
6984
|
+
};
|
|
6985
|
+
var indexPastOptions = (words, optionsWithAValue) => {
|
|
6986
|
+
let index = 0;
|
|
6987
|
+
while (index < words.length && FLAG.test(words[index]?.text ?? "") && words[index]?.text !== END_OF_OPTIONS3) {
|
|
6988
|
+
index += wrapperOptionConsumesNextWord(words[index]?.text ?? "", optionsWithAValue) ? 2 : 1;
|
|
6989
|
+
}
|
|
6990
|
+
return index;
|
|
6991
|
+
};
|
|
6992
|
+
var runnerArgsOf = (args, syntax) => {
|
|
6993
|
+
if (syntax.subcommands === null) return args;
|
|
6994
|
+
const at = indexPastOptions(args, syntax.globalOptionsWithAValue);
|
|
6995
|
+
return syntax.subcommands.has(args[at]?.text ?? "") ? args.slice(at + 1) : null;
|
|
6996
|
+
};
|
|
6997
|
+
var optionalValueIsGiven = (words, index, optional) => optional.has(words[index]?.text ?? "") && !FLAG.test(words[index + 1]?.text ?? END_OF_OPTIONS3);
|
|
6998
|
+
var commandStartAfterRunnerOptions = (words, reading, optional) => {
|
|
6999
|
+
let index = 0;
|
|
7000
|
+
while (index < words.length) {
|
|
7001
|
+
const text3 = words[index]?.text ?? "";
|
|
7002
|
+
if (text3 === END_OF_OPTIONS3) return index + 1 + reading.operandsBeforeTheCommand;
|
|
7003
|
+
if (!SHELL_ENV_ASSIGNMENT.test(text3) && (!FLAG.test(text3) || text3 === STANDARD_INPUT_ARGUMENT)) break;
|
|
7004
|
+
const takesTheNextWord = wrapperOptionConsumesNextWord(text3, reading.optionsWithAValue) || optionalValueIsGiven(words, index, optional);
|
|
7005
|
+
index += takesTheNextWord ? 2 : 1;
|
|
7006
|
+
}
|
|
7007
|
+
return index + reading.operandsBeforeTheCommand;
|
|
7008
|
+
};
|
|
7009
|
+
var pastAnEndOfOptions = (words, index) => words[index]?.text === END_OF_OPTIONS3 ? index + 1 : index;
|
|
7010
|
+
var commandARunnerReadingRuns = (words, reading, syntax) => {
|
|
7011
|
+
const start = pastAnEndOfOptions(words, commandStartAfterRunnerOptions(words, reading, syntax.optionsWithAnOptionalValue));
|
|
7012
|
+
const command = words[start];
|
|
7013
|
+
return command === void 0 ? [] : [{ program: command, args: words.slice(start + 1) }];
|
|
7014
|
+
};
|
|
7015
|
+
var isANamedRunnerCall = ({ program, args }) => {
|
|
7016
|
+
const syntax = RUNNER_SYNTAX.get(basenameOf(program?.text ?? ""));
|
|
7017
|
+
return syntax !== void 0 && runnerArgsOf(args, syntax) !== null;
|
|
7018
|
+
};
|
|
7019
|
+
var runnerRunsWhatASubstitutionPrints = (segment, innermost) => segment.feedsASubstitution && isANamedRunnerCall(innermost) && commandsANamedRunnerRuns(innermost).length === 0;
|
|
7020
|
+
var commandsANamedRunnerRuns = ({ program, args }) => {
|
|
7021
|
+
const syntax = RUNNER_SYNTAX.get(basenameOf(program?.text ?? ""));
|
|
7022
|
+
const words = syntax === void 0 ? null : runnerArgsOf(args, syntax);
|
|
7023
|
+
if (syntax === void 0 || words === null) return [];
|
|
7024
|
+
return syntax.readings.flatMap((reading) => commandARunnerReadingRuns(words, reading, syntax));
|
|
7025
|
+
};
|
|
7026
|
+
var COMMAND_AFTER_AN_OPTION = /* @__PURE__ */ new Map([
|
|
7027
|
+
["nix", { subcommands: /* @__PURE__ */ new Set(["develop", "shell"]), options: /* @__PURE__ */ new Set(["-c", "--command"]) }]
|
|
7028
|
+
]);
|
|
7029
|
+
var commandAfterAnOption = ({ program, args }) => {
|
|
7030
|
+
const syntax = COMMAND_AFTER_AN_OPTION.get(basenameOf(program?.text ?? ""));
|
|
7031
|
+
if (syntax === void 0 || !args.some((arg) => syntax.subcommands.has(arg.text))) return [];
|
|
7032
|
+
const option = args.findIndex((arg) => syntax.options.has(arg.text));
|
|
7033
|
+
const command = option === -1 ? void 0 : args[option + 1];
|
|
7034
|
+
return command === void 0 ? [] : [{ program: command, args: args.slice(option + 2) }];
|
|
7035
|
+
};
|
|
7036
|
+
var PROGRAM_TEXT_THAT_RUNS_A_SUBSTITUTION = /\$\(|`/;
|
|
7037
|
+
var runnerProgramIsHidden = (invocation) => programIsHidden(invocation) || PROGRAM_TEXT_THAT_RUNS_A_SUBSTITUTION.test(invocation.program?.text ?? "");
|
|
7038
|
+
var everyReadingHidesItsProgram = (readings) => readings.length > 0 && readings.every(runnerProgramIsHidden);
|
|
7039
|
+
var SHORT_OPTION_CLUSTER_ENDING_IN_C = /^-[A-Za-z]*c$/;
|
|
7040
|
+
var COMMAND_STRING_SYNTAX = /* @__PURE__ */ new Map([
|
|
7041
|
+
[SCRIPT, { options: SCRIPT_COMMAND_STRING_OPTIONS, longOptionsWithAValue: ["--command="], cluster: SHORT_OPTION_CLUSTER_ENDING_IN_C }],
|
|
7042
|
+
["mise", { options: /* @__PURE__ */ new Set(["-c", "--command"]), longOptionsWithAValue: ["--command="], cluster: null }],
|
|
7043
|
+
["npm", { options: /* @__PURE__ */ new Set(["-c", "--call"]), longOptionsWithAValue: ["--call="], cluster: null }],
|
|
7044
|
+
["nix-shell", { options: /* @__PURE__ */ new Set(["--run", "--command"]), longOptionsWithAValue: [], cluster: null }],
|
|
7045
|
+
["flox", { options: /* @__PURE__ */ new Set(["-c", "--command"]), longOptionsWithAValue: ["--command="], cluster: null }],
|
|
7046
|
+
["doppler", { options: /* @__PURE__ */ new Set(["--command"]), longOptionsWithAValue: ["--command="], cluster: null }]
|
|
7047
|
+
]);
|
|
7048
|
+
var commandStringAt = (args, index, syntax) => {
|
|
7049
|
+
const text3 = args[index]?.text ?? "";
|
|
7050
|
+
const assignment = syntax.longOptionsWithAValue.find((option) => text3.startsWith(option));
|
|
7051
|
+
if (assignment !== void 0) return text3.slice(assignment.length);
|
|
7052
|
+
return syntax.options.has(text3) || (syntax.cluster?.test(text3) ?? false) ? args[index + 1] : void 0;
|
|
7053
|
+
};
|
|
7054
|
+
var COMMAND_STRING_OPERAND = /* @__PURE__ */ new Map([
|
|
7055
|
+
["sops", { subcommand: "exec-env", reading: wrapperSyntax(["--user"], 1) }]
|
|
7056
|
+
]);
|
|
7057
|
+
var commandStringOperandOf = ({ program, args }) => {
|
|
7058
|
+
const syntax = COMMAND_STRING_OPERAND.get(basenameOf(program?.text ?? ""));
|
|
7059
|
+
const at = syntax === void 0 ? -1 : args.findIndex((arg) => arg.text === syntax.subcommand);
|
|
7060
|
+
if (syntax === void 0 || at === -1) return [];
|
|
7061
|
+
const words = args.slice(at + 1);
|
|
7062
|
+
const operand = words[commandStartAfterWrapper(words, syntax.reading)];
|
|
7063
|
+
return operand === void 0 ? [] : [operand];
|
|
7064
|
+
};
|
|
7065
|
+
var isACommandString = (value) => value !== void 0;
|
|
7066
|
+
var commandStringExpands = (value) => typeof value !== "string" && value.expands;
|
|
7067
|
+
var commandStringText = (value) => typeof value === "string" ? value : value.text;
|
|
7068
|
+
var commandStringOptionsOf = ({ program, args }) => {
|
|
7069
|
+
const syntax = COMMAND_STRING_SYNTAX.get(basenameOf(program?.text ?? ""));
|
|
7070
|
+
return syntax === void 0 ? [] : args.map((_, index) => commandStringAt(args, index, syntax)).filter(isACommandString);
|
|
7071
|
+
};
|
|
7072
|
+
var commandStringsARunnerRuns = (invocation) => {
|
|
7073
|
+
const values = [...commandStringOptionsOf(invocation), ...commandStringOperandOf(invocation)];
|
|
7074
|
+
if (values.length === 0) return NO_INLINE_SCRIPT;
|
|
7075
|
+
if (values.some(commandStringExpands)) return HIDDEN_INLINE_SCRIPT;
|
|
7076
|
+
return { kind: "readable", scripts: values.map(commandStringText) };
|
|
7077
|
+
};
|
|
7078
|
+
var MAX_SHELL_FUNCTIONS_READ = 8;
|
|
7079
|
+
var SHELL_FUNCTION_HEADER = /(?:^|[;&|\n(]|\s)(?:function\s+([A-Za-z_][\w.-]*)\s*(?:\(\s*\))?|([A-Za-z_][\w.-]*)\s*\(\s*\))\s*\{/g;
|
|
7080
|
+
var OPENING_BRACE = "{";
|
|
7081
|
+
var CLOSING_BRACE = "}";
|
|
7082
|
+
var indexOfTheMatchingBrace = (visible, opening) => {
|
|
7083
|
+
let depth = 0;
|
|
7084
|
+
for (let index = opening; index < visible.length; index += 1) {
|
|
7085
|
+
if (visible[index] === OPENING_BRACE) depth += 1;
|
|
7086
|
+
if (visible[index] === CLOSING_BRACE && (depth -= 1) === 0) return index;
|
|
7087
|
+
}
|
|
7088
|
+
return -1;
|
|
7089
|
+
};
|
|
7090
|
+
var shellFunctionsDefinedIn = (command) => {
|
|
7091
|
+
const visible = shellVisibleText(command);
|
|
7092
|
+
if (visible === null || visible.length !== command.length) return [];
|
|
7093
|
+
return [...visible.matchAll(SHELL_FUNCTION_HEADER)].slice(0, MAX_SHELL_FUNCTIONS_READ + 1).flatMap((match) => {
|
|
7094
|
+
const opening = match.index + match[0].length - 1;
|
|
7095
|
+
const closing = indexOfTheMatchingBrace(visible, opening);
|
|
7096
|
+
const name = match[1] ?? match[2];
|
|
7097
|
+
return name === void 0 || closing === -1 ? [] : [{ name, body: command.slice(opening + 1, closing).trim() }];
|
|
7098
|
+
});
|
|
7099
|
+
};
|
|
7100
|
+
var segmentCalls = (segment, name) => segment.invocation.program?.text === name || innermostInvocation(segment.invocation).program?.text === name;
|
|
7101
|
+
var callsAProgramNamed = (segments, name) => segments.some((segment) => segmentCalls(segment, name));
|
|
7102
|
+
var TOO_MANY_FUNCTIONS = { kind: "too_many" };
|
|
7103
|
+
var bodiesOfFunctionsCalledIn = (command, segments) => {
|
|
7104
|
+
const defined = shellFunctionsDefinedIn(command);
|
|
7105
|
+
if (defined.length > MAX_SHELL_FUNCTIONS_READ) return TOO_MANY_FUNCTIONS;
|
|
7106
|
+
return { kind: "readable", bodies: defined.filter((fn) => fn.body.length > 0 && callsAProgramNamed(segments, fn.name)).map((fn) => fn.body) };
|
|
7107
|
+
};
|
|
7108
|
+
var runnerReadingOf = (innermost) => {
|
|
7109
|
+
const named = [...commandsANamedRunnerRuns(innermost), ...commandAfterAnOption(innermost)];
|
|
7110
|
+
const afterEndOfOptions = commandAfterARunnersEndOfOptions(innermost);
|
|
7111
|
+
const scripts = commandStringsARunnerRuns(innermost);
|
|
7112
|
+
if (scripts.kind === "hidden" || everyReadingHidesItsProgram(named)) return HIDDEN_INLINE_SCRIPT;
|
|
7113
|
+
const fromScript = scripts.kind === "readable" ? scripts.scripts : [];
|
|
7114
|
+
const commands = [.../* @__PURE__ */ new Set([...fromScript, ...named.map(verbatimInvocationText), ...afterEndOfOptions.map(verbatimInvocationText)])];
|
|
7115
|
+
return commands.length === 0 ? NO_INLINE_SCRIPT : { kind: "readable", scripts: commands };
|
|
7116
|
+
};
|
|
7117
|
+
var MAX_SPELLED_FORMS = 4096;
|
|
7118
|
+
var markTruncated = (accumulator) => {
|
|
7119
|
+
accumulator.hidesWhatItRuns = true;
|
|
7120
|
+
accumulator.truncated = true;
|
|
7121
|
+
};
|
|
7122
|
+
var addSpelledForm = (accumulator, form) => {
|
|
7123
|
+
if (accumulator.forms.length >= MAX_SPELLED_FORMS) {
|
|
7124
|
+
markTruncated(accumulator);
|
|
7125
|
+
return;
|
|
7126
|
+
}
|
|
7127
|
+
accumulator.forms.push(form);
|
|
7128
|
+
};
|
|
7129
|
+
var addSpelledForms = (accumulator, forms) => {
|
|
7130
|
+
for (const form of forms) addSpelledForm(accumulator, form);
|
|
7131
|
+
};
|
|
7132
|
+
var spellCommandInto = (accumulator, command, depth, reach) => {
|
|
7133
|
+
if (depth > MAX_SPELLING_DEPTH) {
|
|
7134
|
+
accumulator.hidesWhatItRuns = true;
|
|
7135
|
+
return;
|
|
7136
|
+
}
|
|
7137
|
+
if (accumulator.forms.length >= MAX_SPELLED_FORMS) {
|
|
7138
|
+
markTruncated(accumulator);
|
|
7139
|
+
return;
|
|
7140
|
+
}
|
|
7141
|
+
accumulator.hidesWhatItRuns ||= runsASubstitutionAsAProgram(command);
|
|
7142
|
+
const spellNested = (nested) => {
|
|
7143
|
+
addSpelledForm(accumulator, nested);
|
|
7144
|
+
spellCommandInto(accumulator, nested, depth + 1, reach);
|
|
7145
|
+
};
|
|
7146
|
+
const segments = spelledSegmentsOf(command);
|
|
7147
|
+
for (const segment of segments) {
|
|
6761
7148
|
const innermost = innermostInvocation(segment.invocation);
|
|
6762
7149
|
const scripts = inlineScriptsOf(innermost, segment.heredocs);
|
|
6763
|
-
|
|
6764
|
-
|
|
6765
|
-
|
|
6766
|
-
|
|
6767
|
-
|
|
6768
|
-
|
|
6769
|
-
|
|
7150
|
+
addSpelledForm(accumulator, segment.text);
|
|
7151
|
+
addSpelledForms(accumulator, spellingsOfAnInvocation(segment.invocation, innermost));
|
|
7152
|
+
accumulator.hidesWhatItRuns ||= segmentHidesWhatItRuns(segment, innermost, scripts);
|
|
7153
|
+
for (const nested of commandsNestedIn(innermost, scripts)) spellNested(nested);
|
|
7154
|
+
const ranOnBehalf = readsCommandRunners(reach) ? runnerReadingOf(innermost) : NO_INLINE_SCRIPT;
|
|
7155
|
+
accumulator.hidesWhatItRuns ||= ranOnBehalf.kind === "hidden" || readsCommandRunners(reach) && runnerRunsWhatASubstitutionPrints(segment, innermost);
|
|
7156
|
+
if (ranOnBehalf.kind === "readable") for (const nested of ranOnBehalf.scripts) spellNested(nested);
|
|
7157
|
+
}
|
|
7158
|
+
if (!readsCommandRunners(reach) || depth > 0) return;
|
|
7159
|
+
const functions = bodiesOfFunctionsCalledIn(command, segments);
|
|
7160
|
+
accumulator.hidesWhatItRuns ||= functions.kind === "too_many";
|
|
7161
|
+
if (functions.kind === "readable") for (const body of functions.bodies) spellNested(body);
|
|
7162
|
+
};
|
|
7163
|
+
var commandSpellings = (command, reach) => {
|
|
7164
|
+
const accumulator = { forms: [], hidesWhatItRuns: false, truncated: false };
|
|
7165
|
+
try {
|
|
7166
|
+
spellCommandInto(accumulator, command, 0, reach);
|
|
7167
|
+
} catch {
|
|
7168
|
+
return SPELLINGS_OF_AN_UNREADABLE_COMMAND;
|
|
6770
7169
|
}
|
|
6771
|
-
|
|
7170
|
+
const completeness = accumulator.truncated ? "truncated" : "complete";
|
|
7171
|
+
return { forms: accumulator.forms, hidesWhatItRuns: accumulator.hidesWhatItRuns, completeness };
|
|
6772
7172
|
};
|
|
6773
|
-
var commandSpellings = (command) => commandSpellingsAt(command, 0);
|
|
6774
7173
|
var passesItsInputToSomethingThatCanAct = (segment) => segment.readsInput && !isSafeReadOnlyCommand(verbatimInvocationText(segment.invocation));
|
|
6775
7174
|
var feedsTextToSomethingThatCanAct = (command) => roughSegmentsOf(command).some(passesItsInputToSomethingThatCanAct);
|
|
7175
|
+
var NOT_READ_IN_FULL = { kind: "not_read_in_full" };
|
|
6776
7176
|
var readingsThatCanAct = (command) => {
|
|
6777
|
-
const spellings = commandSpellings(command)
|
|
6778
|
-
|
|
7177
|
+
const spellings = commandSpellings(command, SPELLS_COMMAND_RUNNERS_TOO);
|
|
7178
|
+
if (!spellingsAreComplete(spellings)) return NOT_READ_IN_FULL;
|
|
7179
|
+
return { kind: "read", readings: feedsTextToSomethingThatCanAct(command) ? [command, ...spellings.forms] : spellings.forms };
|
|
7180
|
+
};
|
|
7181
|
+
var aReadingIsDestructive = (toolName, command) => {
|
|
7182
|
+
const readings = readingsThatCanAct(command);
|
|
7183
|
+
return readings.kind === "not_read_in_full" || readings.readings.some((reading) => classifyDecisionRisk(toolNameForAPosixReading(toolName), reading) === "destructive");
|
|
6779
7184
|
};
|
|
6780
7185
|
var withoutSessionToolGrants = (config) => ({
|
|
6781
7186
|
...config,
|
|
@@ -7796,20 +8201,20 @@ var coordinationFloorApplies = (toolName, rank) => readsOrStopsItsOwnWork(toolNa
|
|
|
7796
8201
|
var argumentsAsWritten = (args) => ({ forms: args, hidesWhatItRuns: false });
|
|
7797
8202
|
var namesAnArgumentOf = (pattern, toolName) => pattern.startsWith(`${toolName}(`);
|
|
7798
8203
|
var isSpelledOut = (form) => form.length > 0;
|
|
7799
|
-
var restrictionReadingOf = (restrictingPatterns, toolName, args) => {
|
|
8204
|
+
var restrictionReadingOf = (restrictingPatterns, toolName, args, reach) => {
|
|
7800
8205
|
const command = toolName in POLICY_COMMAND_KEYS ? args[0] : void 0;
|
|
7801
8206
|
if (command === void 0 || !restrictingPatterns.some((pattern) => namesAnArgumentOf(pattern, toolName))) {
|
|
7802
8207
|
return argumentsAsWritten(args);
|
|
7803
8208
|
}
|
|
7804
|
-
const spellings = commandSpellings(command);
|
|
8209
|
+
const spellings = commandSpellings(command, reach);
|
|
7805
8210
|
return {
|
|
7806
8211
|
forms: [.../* @__PURE__ */ new Set([...args, ...spellings.forms.filter(isSpelledOut)])],
|
|
7807
8212
|
hidesWhatItRuns: POSIX_SHELL_TOOLS.has(toolName) && spellings.hidesWhatItRuns
|
|
7808
8213
|
};
|
|
7809
8214
|
};
|
|
7810
|
-
var formsOfEveryCandidate = (restrictingPatterns, toolName, args) => [...new Set(args.flatMap((arg) => restrictionReadingOf(restrictingPatterns, toolName, [arg]).forms))];
|
|
8215
|
+
var formsOfEveryCandidate = (restrictingPatterns, toolName, args) => [...new Set(args.flatMap((arg) => restrictionReadingOf(restrictingPatterns, toolName, [arg], SPELLS_COMMAND_RUNNERS_TOO).forms))];
|
|
7811
8216
|
var restrictingPatternsOf = (policies) => policies.filter(restricts).map((policy) => policy.tool);
|
|
7812
|
-
var policyReadingOf = (policies, toolName, args) => restrictionReadingOf(restrictingPatternsOf(policies), toolName, args);
|
|
8217
|
+
var policyReadingOf = (policies, toolName, args, reach) => restrictionReadingOf(restrictingPatternsOf(policies), toolName, args, reach);
|
|
7813
8218
|
var stricterRule = (current, challenger) => current !== void 0 && (challenger === void 0 || comparePolicyStrictness(current.policy, challenger.policy) > 0) ? current : challenger;
|
|
7814
8219
|
var restrictsAnArgumentOf = (policy, toolName) => restricts(policy) && namesAnArgumentOf(policy.tool, toolName);
|
|
7815
8220
|
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);
|
|
@@ -7820,7 +8225,7 @@ var governingRuleForReading = (pool, toolName, args, reading, repoKey, sessionId
|
|
|
7820
8225
|
var resolveAutoResolveOrigin = (config, toolName, toolInput, cwd, repoKey, sessionId) => {
|
|
7821
8226
|
const args = toolInput ? policyArgForms(toolName, toolInput, cwd) : [];
|
|
7822
8227
|
const arg = args[0];
|
|
7823
|
-
const reading = policyReadingOf(config.policies, toolName, args);
|
|
8228
|
+
const reading = policyReadingOf(config.policies, toolName, args, SPELLS_COMMAND_RUNNERS_TOO);
|
|
7824
8229
|
const rank = governingRuleForReading(config.policies, toolName, args, reading, repoKey, sessionId)?.rank;
|
|
7825
8230
|
if (shellReadOnlyFloorApplies(toolName, arg, rank) || coordinationFloorApplies(toolName, rank)) {
|
|
7826
8231
|
return DECISION_ORIGIN.safeReadonly;
|
|
@@ -7850,12 +8255,12 @@ var unmatchedPolicyOf = (config, toolName) => ({
|
|
|
7850
8255
|
});
|
|
7851
8256
|
var sessionToolGrantCannotCover = (toolName, arg, toolInput) => typeof arg === "string" && commandNeedsAPerson(toolName, arg) || parseMcpToolName(toolName) !== void 0 && (toolInput === void 0 || !mcpToolInputOnlyReads(toolName, toolInput));
|
|
7852
8257
|
var stricterOfTheReadings = (asWritten, asSpelled, unmatched) => comparePolicyStrictness(asWritten?.policy ?? unmatched, asSpelled?.policy ?? unmatched) > 0 ? asWritten : asSpelled;
|
|
7853
|
-
var
|
|
8258
|
+
var resolvePolicyReading = (reach, config, toolName, modeOverride, toolInput, cwd, repoKey, sessionId) => {
|
|
7854
8259
|
const args = toolInput ? policyArgForms(toolName, toolInput, cwd) : [];
|
|
7855
8260
|
const arg = args[0];
|
|
7856
8261
|
const unmatched = unmatchedPolicyOf(config, toolName);
|
|
7857
8262
|
const asWritten = layeredGoverningRule(config, toolName, args, argumentsAsWritten(args), repoKey, sessionId);
|
|
7858
|
-
const asSpelled = layeredGoverningRule(config, toolName, args, policyReadingOf(config.policies, toolName, args), repoKey, sessionId);
|
|
8263
|
+
const asSpelled = layeredGoverningRule(config, toolName, args, policyReadingOf(config.policies, toolName, args, reach), repoKey, sessionId);
|
|
7859
8264
|
const match = stricterOfTheReadings(asWritten, asSpelled, unmatched);
|
|
7860
8265
|
let base = match?.policy ?? unmatched;
|
|
7861
8266
|
const governedBySpecificRule = isSpecificArgumentRank(match?.rank);
|
|
@@ -7865,7 +8270,7 @@ var resolvePolicy = (config, toolName, modeOverride, toolInput, cwd, repoKey, se
|
|
|
7865
8270
|
const aRuleNamesASpelling = isSpecificArgumentRank(asSpelled?.rank);
|
|
7866
8271
|
const approvedByReadOnlyFloor = !isAutoDeny(base) && (shellReadOnlyFloorApplies(toolName, arg, match?.rank) && !aRuleNamesASpelling || coordinationFloorApplies(toolName, match?.rank));
|
|
7867
8272
|
if (governedBySessionToolGrant && !approvedByReadOnlyFloor && sessionToolGrantCannotCover(toolName, arg, toolInput)) {
|
|
7868
|
-
return
|
|
8273
|
+
return resolvePolicyReading(reach, withoutSessionToolGrants(config), toolName, modeOverride, toolInput, cwd, repoKey, sessionId);
|
|
7869
8274
|
}
|
|
7870
8275
|
if (approvedByReadOnlyFloor) {
|
|
7871
8276
|
base = autoApprove(base.tool);
|
|
@@ -7886,6 +8291,29 @@ var resolvePolicy = (config, toolName, modeOverride, toolInput, cwd, repoKey, se
|
|
|
7886
8291
|
}
|
|
7887
8292
|
return base;
|
|
7888
8293
|
};
|
|
8294
|
+
var resolvePolicy = (config, toolName, modeOverride, toolInput, cwd, repoKey, sessionId) => {
|
|
8295
|
+
const withoutRunners = resolvePolicyReading(SPELLS_WITHOUT_COMMAND_RUNNERS, config, toolName, modeOverride, toolInput, cwd, repoKey, sessionId);
|
|
8296
|
+
const withRunners = resolvePolicyReading(SPELLS_COMMAND_RUNNERS_TOO, config, toolName, modeOverride, toolInput, cwd, repoKey, sessionId);
|
|
8297
|
+
return strictestReadingOf(withRunners, withoutRunners);
|
|
8298
|
+
};
|
|
8299
|
+
var VERDICT_RESTRAINT = { allow: 0, requires_human: 1, deny: 2 };
|
|
8300
|
+
var verdictRestraint = (policy) => VERDICT_RESTRAINT[verdictForPolicy(policy)];
|
|
8301
|
+
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;
|
|
8302
|
+
var stricterModeOf = (policy, other) => restraintRank(other) > restraintRank(policy) ? other.mode : policy.mode;
|
|
8303
|
+
var stricterTimeoutActionOf = (policy, other) => TIMEOUT_ACTION_STRICTNESS[other.timeoutAction] > TIMEOUT_ACTION_STRICTNESS[policy.timeoutAction] ? other.timeoutAction : policy.timeoutAction;
|
|
8304
|
+
var askingHardestOfBoth = (policy, other) => ({
|
|
8305
|
+
...policy,
|
|
8306
|
+
mode: stricterModeOf(policy, other),
|
|
8307
|
+
timeoutAction: stricterTimeoutActionOf(policy, other),
|
|
8308
|
+
timeoutSeconds: Math.max(policy.timeoutSeconds, other.timeoutSeconds),
|
|
8309
|
+
pushFirstSeconds: Math.min(policy.pushFirstSeconds, other.pushFirstSeconds)
|
|
8310
|
+
});
|
|
8311
|
+
var strictestReadingOf = (withRunners, withoutRunners) => {
|
|
8312
|
+
const verdicts = verdictRestraint(withRunners) - verdictRestraint(withoutRunners);
|
|
8313
|
+
if (verdicts !== 0) return verdicts > 0 ? withRunners : withoutRunners;
|
|
8314
|
+
if (verdictForPolicy(withoutRunners) !== "requires_human" || asksAtLeastAsHard(withoutRunners, withRunners)) return withoutRunners;
|
|
8315
|
+
return asksAtLeastAsHard(withRunners, withoutRunners) ? withRunners : askingHardestOfBoth(withoutRunners, withRunners);
|
|
8316
|
+
};
|
|
7889
8317
|
var restraintRank = (policy) => {
|
|
7890
8318
|
if (isAutoDeny(policy)) return 4;
|
|
7891
8319
|
if (isAutoApprove(policy)) return 0;
|
|
@@ -8166,7 +8594,7 @@ var everyCommandSegmentGranted = (rules, toolName, command) => {
|
|
|
8166
8594
|
return segments !== null && segments.every((segment) => isSafeReadOnlyCommand(segment) || anyRuleGrants(rules, toolName, [segment]));
|
|
8167
8595
|
};
|
|
8168
8596
|
var agentRuleReadingOf = (rules, toolName, args) => {
|
|
8169
|
-
const reading = restrictionReadingOf([...rules.ask, ...rules.deny], toolName, args);
|
|
8597
|
+
const reading = restrictionReadingOf([...rules.ask, ...rules.deny], toolName, args, SPELLS_COMMAND_RUNNERS_TOO);
|
|
8170
8598
|
const command = toolName in POLICY_COMMAND_KEYS ? args[0] : void 0;
|
|
8171
8599
|
const normalized = command === void 0 ? null : normalizedCommand(command);
|
|
8172
8600
|
return normalized === null ? reading : { ...reading, forms: [...reading.forms, normalized] };
|
|
@@ -8200,7 +8628,7 @@ var aChosenRuleGoverns = (input, counts = everyRule) => {
|
|
|
8200
8628
|
if (routes === null) return true;
|
|
8201
8629
|
return input.toolInputs.some((toolInput) => {
|
|
8202
8630
|
const args = policyArgForms(input.toolName, toolInput, input.cwd);
|
|
8203
|
-
const reading = policyReadingOf(chosen, input.toolName, args);
|
|
8631
|
+
const reading = policyReadingOf(chosen, input.toolName, args, SPELLS_COMMAND_RUNNERS_TOO);
|
|
8204
8632
|
const governing = governingRuleForReading(chosen, input.toolName, args, reading, input.repoKey, input.sessionId);
|
|
8205
8633
|
return governing !== void 0 && counts(governing.policy) || findBestRoute(routes, input.toolName, args, input.repoKey) !== void 0;
|
|
8206
8634
|
});
|
|
@@ -8656,6 +9084,9 @@ export {
|
|
|
8656
9084
|
readSetupAgentFailures,
|
|
8657
9085
|
isSetupConnectMode,
|
|
8658
9086
|
readSetupOutcomeProperties,
|
|
9087
|
+
POLICY_REQUEST_CAPABILITIES_HEADER,
|
|
9088
|
+
CLI_POLICY_REQUEST_CAPABILITIES,
|
|
9089
|
+
policyRequestCapabilitiesHeaderValue,
|
|
8659
9090
|
DECLINED_AGENTS_FILE,
|
|
8660
9091
|
parseDeclinedAgents,
|
|
8661
9092
|
serializeDeclinedAgents,
|