ssh-mcp-pro 1.1.2 → 1.1.4

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.
Files changed (59) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +23 -1
  3. package/dist/config-parsers.d.ts +17 -0
  4. package/dist/config-parsers.d.ts.map +1 -0
  5. package/dist/config-parsers.js +86 -0
  6. package/dist/config-parsers.js.map +1 -0
  7. package/dist/config.d.ts +3 -2
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +5 -58
  10. package/dist/config.js.map +1 -1
  11. package/dist/ensure-pkg.d.ts +9 -0
  12. package/dist/ensure-pkg.d.ts.map +1 -0
  13. package/dist/ensure-pkg.js +105 -0
  14. package/dist/ensure-pkg.js.map +1 -0
  15. package/dist/ensure.d.ts.map +1 -1
  16. package/dist/ensure.js +5 -106
  17. package/dist/ensure.js.map +1 -1
  18. package/dist/fs-sftp.d.ts +58 -0
  19. package/dist/fs-sftp.d.ts.map +1 -0
  20. package/dist/fs-sftp.js +184 -0
  21. package/dist/fs-sftp.js.map +1 -0
  22. package/dist/fs-tools.d.ts.map +1 -1
  23. package/dist/fs-tools.js +2 -144
  24. package/dist/fs-tools.js.map +1 -1
  25. package/dist/mcp.d.ts +1 -1
  26. package/dist/mcp.js +1 -1
  27. package/dist/remote/agent-handler.d.ts +36 -0
  28. package/dist/remote/agent-handler.d.ts.map +1 -0
  29. package/dist/remote/agent-handler.js +255 -0
  30. package/dist/remote/agent-handler.js.map +1 -0
  31. package/dist/remote/control-plane.d.ts +4 -17
  32. package/dist/remote/control-plane.d.ts.map +1 -1
  33. package/dist/remote/control-plane.js +23 -657
  34. package/dist/remote/control-plane.js.map +1 -1
  35. package/dist/remote/http-util.d.ts +29 -0
  36. package/dist/remote/http-util.d.ts.map +1 -0
  37. package/dist/remote/http-util.js +159 -0
  38. package/dist/remote/http-util.js.map +1 -0
  39. package/dist/remote/oauth-handler.d.ts +47 -0
  40. package/dist/remote/oauth-handler.d.ts.map +1 -0
  41. package/dist/remote/oauth-handler.js +296 -0
  42. package/dist/remote/oauth-handler.js.map +1 -0
  43. package/dist/session-auth.d.ts +39 -0
  44. package/dist/session-auth.d.ts.map +1 -0
  45. package/dist/session-auth.js +148 -0
  46. package/dist/session-auth.js.map +1 -0
  47. package/dist/session.d.ts +25 -20
  48. package/dist/session.d.ts.map +1 -1
  49. package/dist/session.js +88 -159
  50. package/dist/session.js.map +1 -1
  51. package/dist/tunnel.d.ts.map +1 -1
  52. package/dist/tunnel.js +46 -9
  53. package/dist/tunnel.js.map +1 -1
  54. package/docs/audit/2026-06-05-ecosystem-audit.md +1 -1
  55. package/docs/governance/issue-taxonomy.json +5 -0
  56. package/mcp.json +1 -1
  57. package/package.json +21 -15
  58. package/registry/ssh-mcp-pro/mcp.json +1 -1
  59. package/server.json +3 -3
package/CHANGELOG.md CHANGED
@@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.1.4](https://github.com/oaslananka/ssh-mcp-pro/compare/ssh-mcp-pro-v1.1.3...ssh-mcp-pro-v1.1.4) (2026-06-16)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * harden ssh automation release and runtime paths ([d1d9faf](https://github.com/oaslananka/ssh-mcp-pro/commit/d1d9fafd286e0b0019f0957a06eb3f08d16ad576))
14
+
15
+ ## [1.1.3](https://github.com/oaslananka/ssh-mcp-pro/compare/ssh-mcp-pro-v1.1.2...ssh-mcp-pro-v1.1.3) (2026-06-11)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * **ci:** disable scorecard publish_results to fix OpenSSF failure ([ac5ce05](https://github.com/oaslananka/ssh-mcp-pro/commit/ac5ce054d046e12c6683b3390176005879f646a4))
21
+
8
22
  ## [1.1.2](https://github.com/oaslananka/ssh-mcp-pro/compare/ssh-mcp-pro-v1.1.1...ssh-mcp-pro-v1.1.2) (2026-06-05)
9
23
 
10
24
 
@@ -54,5 +68,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
54
68
  ### Added
55
69
 
56
70
  - Publish generated TypeDoc API reference through GitHub Pages.
71
+ - Add repository Taskfile shortcuts for common quality and release checks.
72
+
73
+ ### Changed
74
+
75
+ - Complete README usage, contributing, and license guidance.
76
+ - Remove prohibited attribution and placeholder-marker literals from repository text.
57
77
 
58
78
  [Unreleased]: https://github.com/oaslananka/ssh-mcp-pro/compare/v1.0.0...HEAD
package/README.md CHANGED
@@ -10,7 +10,7 @@ ssh-mcp-pro is a secure Model Context Protocol (MCP) server for SSH automation.
10
10
 
11
11
  ## Prerequisites
12
12
 
13
- - Node.js `>=22.22.2` or `>=24.15.0`
13
+ - Node.js `>=22.22.2` or `>=24.15.0` or `>=26.3.0`
14
14
  - pnpm `>=11.0.9`
15
15
  - SSH access to the target hosts
16
16
  - Docker, only for local integration tests and container image builds
@@ -92,6 +92,19 @@ After registration, start with discovery and a strict host-key policy:
92
92
  List configured SSH hosts, open a session to bastion.example.com as deploy with hostKeyPolicy=strict, then run os_detect.
93
93
  ```
94
94
 
95
+ ## Usage
96
+
97
+ Use ssh-mcp-pro from an MCP client over stdio, or run the HTTP transport for
98
+ remote-safe connector profiles. Start with read-only discovery tools, inspect
99
+ the active policy, and create explicit sessions before running remote commands:
100
+
101
+ ```text
102
+ List configured SSH hosts, explain the active SSH policy, connect to the selected host, then report its operating system and disk usage.
103
+ ```
104
+
105
+ See [examples/README.md](examples/README.md) for additional workflows and
106
+ [INSTALL.md](INSTALL.md) for client-specific setup.
107
+
95
108
  ## Configuration
96
109
 
97
110
  All `SSH_MCP_*` environment variables parsed by `src/config.ts` are listed below. Comma-separated settings also accept newline-separated values.
@@ -188,3 +201,12 @@ ssh-mcp-pro starts with strict SSH host-key verification, denies root login, den
188
201
  - [examples/README.md](examples/README.md) contains workflow examples.
189
202
  - [ARCHITECTURE.md](ARCHITECTURE.md) explains the major subsystems and ADRs.
190
203
  - [REGISTRY_SUBMISSION.md](REGISTRY_SUBMISSION.md) tracks MCP Registry submission readiness.
204
+
205
+ ## Contributing
206
+
207
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for setup, quality gates, commit rules,
208
+ and pull request expectations.
209
+
210
+ ## License
211
+
212
+ ssh-mcp-pro is available under the [MIT License](LICENSE).
@@ -0,0 +1,17 @@
1
+ import type { PolicyConfig } from "./policy.js";
2
+ import type { HostKeyPolicy } from "./types.js";
3
+ export declare const CONNECTOR_CREDENTIAL_PROVIDERS: readonly ["none", "agent", "command"];
4
+ export type ConnectorCredentialProvider = (typeof CONNECTOR_CREDENTIAL_PROVIDERS)[number];
5
+ export declare function parseBoolean(value: string | undefined, fallback: boolean): boolean;
6
+ export declare function parseInteger(value: string | undefined, fallback: number): number;
7
+ export declare function parseList(value: string | undefined): string[];
8
+ export declare function parseHostKeyPolicy(value: string | undefined, fallback: HostKeyPolicy): HostKeyPolicy;
9
+ export declare function parseCredentialProvider(value: string | undefined, fallback: ConnectorCredentialProvider): ConnectorCredentialProvider;
10
+ export declare function parseAuthMode(value: string | undefined, fallback: "bearer" | "oauth"): "bearer" | "oauth";
11
+ /**
12
+ * Check for deprecated environment variables and log migration warnings.
13
+ * Returns a count of warnings issued for testing or reporting.
14
+ */
15
+ export declare function checkDeprecatedEnvVars(): number;
16
+ export declare function loadPolicyFile(filePath: string | undefined): Partial<PolicyConfig>;
17
+ //# sourceMappingURL=config-parsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-parsers.d.ts","sourceRoot":"","sources":["../src/config-parsers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,8BAA8B,uCAAwC,CAAC;AACpF,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1F,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAKlF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMhF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAQ7D;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,aAAa,GACtB,aAAa,CAKf;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,2BAA2B,GACpC,2BAA2B,CAQ7B;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAC3B,QAAQ,GAAG,OAAO,CAEpB;AAcD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAY/C;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAmBlF"}
@@ -0,0 +1,86 @@
1
+ import * as fs from "node:fs";
2
+ import { logger } from "./logging.js";
3
+ export const CONNECTOR_CREDENTIAL_PROVIDERS = ["none", "agent", "command"];
4
+ export function parseBoolean(value, fallback) {
5
+ if (value === undefined) {
6
+ return fallback;
7
+ }
8
+ return ["1", "true", "yes", "on"].includes(value.toLowerCase());
9
+ }
10
+ export function parseInteger(value, fallback) {
11
+ if (value === undefined) {
12
+ return fallback;
13
+ }
14
+ const parsed = Number.parseInt(value, 10);
15
+ return Number.isFinite(parsed) ? parsed : fallback;
16
+ }
17
+ export function parseList(value) {
18
+ if (!value) {
19
+ return [];
20
+ }
21
+ return value
22
+ .split(/[\n,]/)
23
+ .map((item) => item.trim())
24
+ .filter(Boolean);
25
+ }
26
+ export function parseHostKeyPolicy(value, fallback) {
27
+ if (value === "strict" || value === "accept-new" || value === "insecure") {
28
+ return value;
29
+ }
30
+ return fallback;
31
+ }
32
+ export function parseCredentialProvider(value, fallback) {
33
+ if (value === undefined || value === "") {
34
+ return fallback;
35
+ }
36
+ if (CONNECTOR_CREDENTIAL_PROVIDERS.includes(value)) {
37
+ return value;
38
+ }
39
+ return fallback;
40
+ }
41
+ export function parseAuthMode(value, fallback) {
42
+ return value === "oauth" || value === "bearer" ? value : fallback;
43
+ }
44
+ /**
45
+ * Map of deprecated environment variable names to their replacements.
46
+ * Keys are deprecated names, values are the recommended replacements.
47
+ */
48
+ const DEPRECATED_ENV_VARS = {
49
+ PORT: "SSH_MCP_HTTP_PORT",
50
+ KNOWN_HOSTS_PATH: "SSH_MCP_KNOWN_HOSTS_PATH",
51
+ STRICT_HOST_KEY_CHECKING: "SSH_MCP_HOST_KEY_POLICY",
52
+ SSH_MCP_STRICT_HOST_KEY: "SSH_MCP_HOST_KEY_POLICY",
53
+ SSH_MCP_CONNECTOR_PROFILE: "SSH_MCP_TOOL_PROFILE",
54
+ };
55
+ /**
56
+ * Check for deprecated environment variables and log migration warnings.
57
+ * Returns a count of warnings issued for testing or reporting.
58
+ */
59
+ export function checkDeprecatedEnvVars() {
60
+ let count = 0;
61
+ for (const [oldName, newName] of Object.entries(DEPRECATED_ENV_VARS)) {
62
+ if (process.env[oldName] !== undefined) {
63
+ logger.warn(`Environment variable ${oldName} is deprecated. Use ${newName} instead. ` +
64
+ `Support for ${oldName} will be removed in a future release.`);
65
+ count++;
66
+ }
67
+ }
68
+ return count;
69
+ }
70
+ export function loadPolicyFile(filePath) {
71
+ if (!filePath) {
72
+ return {};
73
+ }
74
+ try {
75
+ const raw = fs.readFileSync(filePath, "utf8");
76
+ return JSON.parse(raw);
77
+ }
78
+ catch (error) {
79
+ logger.error("Failed to load explicitly configured policy file", {
80
+ filePath,
81
+ error,
82
+ });
83
+ throw new Error(`Invalid SSH_MCP_POLICY_FILE ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
84
+ }
85
+ }
86
+ //# sourceMappingURL=config-parsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-parsers.js","sourceRoot":"","sources":["../src/config-parsers.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,8 +1,9 @@
1
+ import { CONNECTOR_CREDENTIAL_PROVIDERS, type ConnectorCredentialProvider } from "./config-parsers.js";
2
+ /** @deprecated Import from config-parsers.js directly */
3
+ export { CONNECTOR_CREDENTIAL_PROVIDERS };
1
4
  import { type ToolProfile } from "./connector-profile.js";
2
5
  import type { PolicyConfig } from "./policy.js";
3
6
  import type { HostKeyPolicy } from "./types.js";
4
- export declare const CONNECTOR_CREDENTIAL_PROVIDERS: readonly ["none", "agent", "command"];
5
- export type ConnectorCredentialProvider = (typeof CONNECTOR_CREDENTIAL_PROVIDERS)[number];
6
7
  /**
7
8
  * Server configuration options
8
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -1,9 +1,10 @@
1
- import * as fs from "node:fs";
2
1
  import * as os from "node:os";
3
2
  import * as path from "node:path";
4
3
  import { logger } from "./logging.js";
4
+ import { CONNECTOR_CREDENTIAL_PROVIDERS, parseBoolean, parseHostKeyPolicy, parseInteger, parseList, loadPolicyFile, parseAuthMode, parseCredentialProvider, checkDeprecatedEnvVars, } from "./config-parsers.js";
5
+ /** @deprecated Import from config-parsers.js directly */
6
+ export { CONNECTOR_CREDENTIAL_PROVIDERS };
5
7
  import { parseToolProfile } from "./connector-profile.js";
6
- export const CONNECTOR_CREDENTIAL_PROVIDERS = ["none", "agent", "command"];
7
8
  export const DEFAULT_CONFIG = {
8
9
  maxSessions: 20,
9
10
  sessionTtlMs: 900000, // 15 minutes
@@ -72,62 +73,6 @@ export const DEFAULT_CONFIG = {
72
73
  oauthRequiredScopes: ["ssh-mcp-pro.read"],
73
74
  },
74
75
  };
75
- function parseBoolean(value, fallback) {
76
- if (value === undefined) {
77
- return fallback;
78
- }
79
- return ["1", "true", "yes", "on"].includes(value.toLowerCase());
80
- }
81
- function parseInteger(value, fallback) {
82
- if (value === undefined) {
83
- return fallback;
84
- }
85
- const parsed = Number.parseInt(value, 10);
86
- return Number.isFinite(parsed) ? parsed : fallback;
87
- }
88
- function parseList(value) {
89
- if (!value) {
90
- return [];
91
- }
92
- return value
93
- .split(/[\n,]/)
94
- .map((item) => item.trim())
95
- .filter(Boolean);
96
- }
97
- function parseHostKeyPolicy(value, fallback) {
98
- if (value === "strict" || value === "accept-new" || value === "insecure") {
99
- return value;
100
- }
101
- return fallback;
102
- }
103
- function parseCredentialProvider(value, fallback) {
104
- if (value === undefined || value === "") {
105
- return fallback;
106
- }
107
- if (CONNECTOR_CREDENTIAL_PROVIDERS.includes(value)) {
108
- return value;
109
- }
110
- return fallback;
111
- }
112
- function parseAuthMode(value, fallback) {
113
- return value === "oauth" || value === "bearer" ? value : fallback;
114
- }
115
- function loadPolicyFile(filePath) {
116
- if (!filePath) {
117
- return {};
118
- }
119
- try {
120
- const raw = fs.readFileSync(filePath, "utf8");
121
- return JSON.parse(raw);
122
- }
123
- catch (error) {
124
- logger.error("Failed to load explicitly configured policy file", {
125
- filePath,
126
- error,
127
- });
128
- throw new Error(`Invalid SSH_MCP_POLICY_FILE ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
129
- }
130
- }
131
76
  /**
132
77
  * Configuration manager with environment variable overrides
133
78
  */
@@ -150,6 +95,8 @@ export class ConfigManager {
150
95
  allowedCiphers: [...DEFAULT_CONFIG.security.allowedCiphers],
151
96
  },
152
97
  };
98
+ // Check for deprecated environment variables and warn
99
+ checkDeprecatedEnvVars();
153
100
  // Apply environment variable overrides
154
101
  config.maxSessions = parseInteger(process.env.SSH_MCP_MAX_SESSIONS, config.maxSessions);
155
102
  config.sessionTtlMs = parseInteger(process.env.SSH_MCP_SESSION_TTL, config.sessionTtlMs);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAoB,MAAM,wBAAwB,CAAC;AAI5E,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAU,CAAC;AAgFpF,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,MAAM,EAAE,aAAa;IACnC,iBAAiB,EAAE,KAAK,EAAE,aAAa;IACvC,gBAAgB,EAAE,KAAK,EAAE,aAAa;IACtC,qBAAqB,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM;IAC1C,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;IACtC,iBAAiB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;IAC5C,gBAAgB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;IAC3C,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE;QACT,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,GAAG;QAChB,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE;YACV,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,QAAQ,EAAE;QACR,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,QAAQ;QACvB,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC;QAC9D,cAAc,EAAE,EAAE;KACnB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,SAAS;QACf,cAAc,EAAE,KAAK;QACrB,YAAY,EAAE,KAAK;QACnB,wBAAwB,EAAE,KAAK;QAC/B,kBAAkB,EAAE,KAAK;QACzB,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,EAAE;QACf,iBAAiB,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;QAC1D,gBAAgB,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;QAC1F,sBAAsB,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;QACrC,qBAAqB,EAAE,EAAE;QACzB,oBAAoB,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC;QACvD,mBAAmB,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;QACtC,sBAAsB,EAAE,EAAE;QAC1B,qBAAqB,EAAE,EAAE;QACzB,gBAAgB,EAAE,EAAE;QACpB,eAAe,EAAE,EAAE;KACpB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,IAAI;QACV,cAAc,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;QACxD,eAAe,EAAE,KAAK;QACtB,mBAAmB,EAAE,IAAI,GAAG,IAAI;QAChC,WAAW,EAAE,EAAE;QACf,gBAAgB,EAAE,OAAO;QACzB,UAAU,EAAE,KAAK;KAClB;IACD,SAAS,EAAE;QACT,WAAW,EAAE,MAAM;QACnB,kBAAkB,EAAE,MAAM;QAC1B,qBAAqB,EAAE,EAAE;QACzB,0BAA0B,EAAE,IAAI;KACjC;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,mBAAmB,EAAE,CAAC,kBAAkB,CAAC;KAC1C;CACF,CAAC;AAEF,SAAS,YAAY,CAAC,KAAyB,EAAE,QAAiB;IAChE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB,EAAE,QAAgB;IAC/D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrD,CAAC;AAED,SAAS,SAAS,CAAC,KAAyB;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK;SACT,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAyB,EAAE,QAAuB;IAC5E,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAyB,EACzB,QAAqC;IAErC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,8BAA8B,CAAC,QAAQ,CAAC,KAAoC,CAAC,EAAE,CAAC;QAClF,OAAO,KAAoC,CAAC;IAC9C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CACpB,KAAyB,EACzB,QAA4B;IAE5B,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpE,CAAC;AAED,SAAS,cAAc,CAAC,QAA4B;IAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,kDAAkD,EAAE;YAC/D,QAAQ;YACR,KAAK;SACN,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,KACrC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,MAAM,CAAe;IAE7B,YAAY,YAAmC,EAAE;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;IAEO,UAAU,CAAC,SAAgC;QACjD,sBAAsB;QACtB,MAAM,MAAM,GAAiB;YAC3B,GAAG,cAAc;YACjB,SAAS,EAAE;gBACT,GAAG,cAAc,CAAC,SAAS;gBAC3B,UAAU,EAAE,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,UAAU,EAAE;aACvD;YACD,QAAQ,EAAE;gBACR,GAAG,cAAc,CAAC,QAAQ;gBAC1B,cAAc,EAAE,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC;aAC5D;SACF,CAAC;QAEF,uCAAuC;QACvC,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACxF,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACzF,MAAM,CAAC,gBAAgB,GAAG,YAAY,CACpC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EACnC,MAAM,CAAC,gBAAgB,CACxB,CAAC;QACF,MAAM,CAAC,qBAAqB,GAAG,YAAY,CACzC,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAC5C,MAAM,CAAC,qBAAqB,CAC7B,CAAC;QACF,MAAM,CAAC,eAAe,GAAG,YAAY,CACnC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EACrC,MAAM,CAAC,eAAe,CACvB,CAAC;QACF,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACzF,MAAM,CAAC,iBAAiB,GAAG,YAAY,CACrC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EACxC,MAAM,CAAC,iBAAiB,CACzB,CAAC;QACF,MAAM,CAAC,gBAAgB,GAAG,YAAY,CACpC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EACtC,MAAM,CAAC,gBAAgB,CACxB,CAAC;QACF,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACrE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY,CACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAC9B,MAAM,CAAC,SAAS,CAAC,OAAO,CACzB,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY,CACzC,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAClC,MAAM,CAAC,SAAS,CAAC,WAAW,CAC7B,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,GAAG,YAAY,CAChD,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAC1C,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CACpC,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,GAAG,YAAY,CACpD,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAC9C,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CACxC,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,GAAG,YAAY,CACjD,OAAO,CAAC,GAAG,CAAC,wCAAwC,EACpD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CACrC,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY,CACtC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EACxC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAC1B,CAAC;QAEF,MAAM,qBAAqB,GACzB,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAC9E,IAAI,qBAAqB,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAG,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC;gBACvE,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,UAAU,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAG,kBAAkB,CAChD,OAAO,CAAC,GAAG,CAAC,uBAAuB,EACnC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAC9B,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,cAAc;YAC5B,OAAO,CAAC,GAAG,CAAC,gBAAgB;gBAC5B,OAAO,CAAC,GAAG,CAAC,wBAAwB;gBACpC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG,YAAY,CAC3C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EACpC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAC/B,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAEhF,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,GAAG;YACd,GAAG,MAAM,CAAC,MAAM;YAChB,GAAG,UAAU;YACb,IAAI,EACF,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,SAAS;gBAC3C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YAC7C,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc;YAC9C,YAAY,EAAE,YAAY,CACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAClC,UAAU,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CACtD;YACD,wBAAwB,EAAE,YAAY,CACpC,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAC9C,UAAU,CAAC,wBAAwB,IAAI,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAC9E;YACD,kBAAkB,EAAE,YAAY,CAC9B,OAAO,CAAC,GAAG,CAAC,4BAA4B,EACxC,UAAU,CAAC,kBAAkB,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAClE;YACD,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM;gBAC/D,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;gBAC9C,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;YAC3D,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM;gBAC/D,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;gBAC9C,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;YAC3D,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,MAAM;gBAC7D,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;gBAC7C,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YACzD,iBAAiB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,MAAM;gBAC1E,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;gBACpD,CAAC,CAAC,CAAC,UAAU,CAAC,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACrE,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,MAAM;gBACxE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;gBACnD,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACnE,sBAAsB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,MAAM;gBACrF,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;gBAC1D,CAAC,CAAC,CAAC,UAAU,CAAC,sBAAsB,IAAI,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC;YAC/E,qBAAqB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,MAAM;gBACnF,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;gBACzD,CAAC,CAAC,CAAC,UAAU,CAAC,qBAAqB,IAAI,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;YAC7E,oBAAoB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,MAAM;gBACjF,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;gBACxD,CAAC,CAAC,CAAC,UAAU,CAAC,oBAAoB,IAAI,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC;YAC3E,mBAAmB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,MAAM;gBAC/E,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;gBACvD,CAAC,CAAC,CAAC,UAAU,CAAC,mBAAmB,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC;YACzE,sBAAsB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,MAAM;gBACrF,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;gBAC1D,CAAC,CAAC,CAAC,UAAU,CAAC,sBAAsB,IAAI,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC;YAC/E,qBAAqB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,MAAM;gBACnF,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;gBACzD,CAAC,CAAC,CAAC,UAAU,CAAC,qBAAqB,IAAI,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;YAC7E,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,MAAM;gBACxE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;gBACnD,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACnE,eAAe,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,MAAM;gBACtE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;gBAClD,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;SAClE,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;QAE9D,MAAM,eAAe,GACnB,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QAC5E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAC/E,MAAM,CAAC,IAAI,GAAG;YACZ,GAAG,MAAM,CAAC,IAAI;YACd,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI;YACvD,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACvF,cAAc,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,MAAM;gBACxE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;gBACrD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc;YAC9B,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,eAAe,EAAE,YAAY,CAC3B,OAAO,CAAC,GAAG,CAAC,yBAAyB,EACrC,MAAM,CAAC,IAAI,CAAC,eAAe,CAC5B;YACD,mBAAmB,EAAE,YAAY,CAC/B,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAC/C,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAChC;YACD,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YACzF,gBAAgB,EAAE,YAAY,CAC5B,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAC5C,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAC7B;YACD,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YACtF,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC,CAAC;QAEF,MAAM,0BAA0B,GAC9B,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC;QACzF,MAAM,wBAAwB,GAC5B,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC;QACrF,MAAM,CAAC,SAAS,GAAG;YACjB,GAAG,MAAM,CAAC,SAAS;YACnB,WAAW,EAAE,gBAAgB,CAC3B,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,EACzE,MAAM,CAAC,SAAS,CAAC,WAAW,CAC7B;YACD,kBAAkB,EAAE,uBAAuB,CACzC,OAAO,CAAC,GAAG,CAAC,qCAAqC,EACjD,MAAM,CAAC,SAAS,CAAC,kBAAkB,CACpC;YACD,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxF,qBAAqB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,MAAM;gBAC5F,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC;gBAClE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB;YAC1C,0BAA0B,EAAE,YAAY,CACtC,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAC3D,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAC5C;YACD,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnF,CAAC;QAEF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QAChF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QACtF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QACpF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QACtF,MAAM,CAAC,IAAI,GAAG;YACZ,GAAG,MAAM,CAAC,IAAI;YACd,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACzE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,mBAAmB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,MAAM;gBAC9E,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;gBACtD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB;SACpC,CAAC;QAEF,oCAAoC;QACpC,MAAM,QAAQ,GAAG;YACf,GAAG,MAAM,CAAC,QAAQ;YAClB,GAAG,SAAS,CAAC,QAAQ;YACrB,cAAc,EAAE,SAAS,CAAC,QAAQ,EAAE,cAAc,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;SAC1F,CAAC;QACF,MAAM,MAAM,GAAG;YACb,GAAG,MAAM,CAAC,MAAM;YAChB,GAAG,SAAS,CAAC,MAAM;YACnB,cAAc,EAAE,SAAS,CAAC,MAAM,EAAE,cAAc,IAAI,QAAQ,CAAC,cAAc;YAC3E,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;YAC/E,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;YAC/E,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YAC5E,iBAAiB,EAAE,SAAS,CAAC,MAAM,EAAE,iBAAiB,IAAI;gBACxD,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB;aACnC;YACD,gBAAgB,EAAE,SAAS,CAAC,MAAM,EAAE,gBAAgB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAC3F,sBAAsB,EAAE,SAAS,CAAC,MAAM,EAAE,sBAAsB,IAAI;gBAClE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAC;aAChD;YACD,qBAAqB,EAAE,SAAS,CAAC,MAAM,EAAE,qBAAqB,IAAI;gBAChE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC;aAC/C;YACD,oBAAoB,EAAE,SAAS,CAAC,MAAM,EAAE,oBAAoB,IAAI;gBAC9D,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;aAC9C;YACD,mBAAmB,EAAE,SAAS,CAAC,MAAM,EAAE,mBAAmB,IAAI;gBAC5D,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;aAC7C;YACD,sBAAsB,EAAE,SAAS,CAAC,MAAM,EAAE,sBAAsB,IAAI;gBAClE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAC;aAChD;YACD,qBAAqB,EAAE,SAAS,CAAC,MAAM,EAAE,qBAAqB,IAAI;gBAChE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC;aAC/C;YACD,gBAAgB,EAAE,SAAS,CAAC,MAAM,EAAE,gBAAgB,IAAI;gBACtD,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;aAC1C;YACD,eAAe,EAAE,SAAS,CAAC,MAAM,EAAE,eAAe,IAAI;gBACpD,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;aACzC;SACF,CAAC;QAEF,MAAM,SAAS,GAAG;YAChB,GAAG,MAAM,CAAC,SAAS;YACnB,GAAG,SAAS,CAAC,SAAS;YACtB,UAAU,EAAE;gBACV,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU;gBAC9B,GAAG,SAAS,CAAC,SAAS,EAAE,UAAU;aACnC;SACF,CAAC;QAEF,OAAO;YACL,GAAG,MAAM;YACT,GAAG,SAAS;YACZ,SAAS;YACT,QAAQ;YACR,MAAM;YACN,IAAI,EAAE;gBACJ,GAAG,MAAM,CAAC,IAAI;gBACd,GAAG,SAAS,CAAC,IAAI;gBACjB,cAAc,EAAE,SAAS,CAAC,IAAI,EAAE,cAAc,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;aAClF;YACD,SAAS,EAAE;gBACT,GAAG,MAAM,CAAC,SAAS;gBACnB,GAAG,SAAS,CAAC,SAAS;gBACtB,qBAAqB,EAAE,SAAS,CAAC,SAAS,EAAE,qBAAqB,IAAI;oBACnE,GAAG,MAAM,CAAC,SAAS,CAAC,qBAAqB;iBAC1C;aACF;YACD,IAAI,EAAE;gBACJ,GAAG,MAAM,CAAC,IAAI;gBACd,GAAG,SAAS,CAAC,IAAI;gBACjB,mBAAmB,EAAE,SAAS,CAAC,IAAI,EAAE,mBAAmB,IAAI;oBAC1D,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB;iBACnC;aACF;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,GAAG,CAA+B,GAAM;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,GAAG,IAAI,CAAC,MAAM;YACd,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;gBACvB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;gBACxB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;aACnE,CAAC;YACF,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;gBACtB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;gBACvB,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;aACzD,CAAC;YACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;gBACpB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;gBACrB,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;gBAClD,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;gBAClD,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;gBAChD,iBAAiB,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;gBAC5D,gBAAgB,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBAC1D,sBAAsB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;gBAC9E,qBAAqB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;gBAC5E,oBAAoB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;gBAC1E,mBAAmB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;gBACxE,sBAAsB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;gBAC9E,qBAAqB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;gBAC5E,gBAAgB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;gBAClE,eAAe,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;aACjE,CAAC;YACF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;gBAClB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;gBACnB,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;aACrD,CAAC;YACF,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;gBACvB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;gBACxB,qBAAqB,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC;aACxE,CAAC;YACF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;gBAClB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;gBACnB,mBAAmB,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;aAC/D,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAA8B;QACnC,MAAM,QAAQ,GAAG;YACf,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;YACvB,GAAG,OAAO,CAAC,QAAQ;YACnB,cAAc,EAAE,OAAO,CAAC,QAAQ,EAAE,cAAc,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;SAC7F,CAAC;QACF,MAAM,MAAM,GAAG;YACb,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;YACrB,GAAG,OAAO,CAAC,MAAM;YACjB,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE,cAAc,IAAI,QAAQ,CAAC,cAAc;YACzE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;YAClF,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;YAClF,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YAC/E,iBAAiB,EAAE,OAAO,CAAC,MAAM,EAAE,iBAAiB,IAAI;gBACtD,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB;aACxC;YACD,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAAE,gBAAgB,IAAI;gBACpD,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB;aACvC;YACD,sBAAsB,EAAE,OAAO,CAAC,MAAM,EAAE,sBAAsB,IAAI;gBAChE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAC;aACrD;YACD,qBAAqB,EAAE,OAAO,CAAC,MAAM,EAAE,qBAAqB,IAAI;gBAC9D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC;aACpD;YACD,oBAAoB,EAAE,OAAO,CAAC,MAAM,EAAE,oBAAoB,IAAI;gBAC5D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;aACnD;YACD,mBAAmB,EAAE,OAAO,CAAC,MAAM,EAAE,mBAAmB,IAAI;gBAC1D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;aAClD;YACD,sBAAsB,EAAE,OAAO,CAAC,MAAM,EAAE,sBAAsB,IAAI;gBAChE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,IAAI,EAAE,CAAC;aACrD;YACD,qBAAqB,EAAE,OAAO,CAAC,MAAM,EAAE,qBAAqB,IAAI;gBAC9D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC;aACpD;YACD,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAAE,gBAAgB,IAAI;gBACpD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;aAC/C;YACD,eAAe,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,IAAI;gBAClD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;aAC9C;SACF,CAAC;QAEF,MAAM,SAAS,GAAG;YAChB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;YACxB,GAAG,OAAO,CAAC,SAAS;YACpB,UAAU,EAAE;gBACV,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU;gBACnC,GAAG,OAAO,CAAC,SAAS,EAAE,UAAU;aACjC;SACF,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,IAAI,CAAC,MAAM;YACd,GAAG,OAAO;YACV,SAAS;YACT,QAAQ;YACR,MAAM;YACN,IAAI,EAAE;gBACJ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;gBACnB,GAAG,OAAO,CAAC,IAAI;gBACf,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,cAAc,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;aACrF;YACD,SAAS,EAAE;gBACT,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;gBACxB,GAAG,OAAO,CAAC,SAAS;gBACpB,qBAAqB,EAAE,OAAO,CAAC,SAAS,EAAE,qBAAqB,IAAI;oBACjE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB;iBAC/C;aACF;YACD,IAAI,EAAE;gBACJ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;gBACnB,GAAG,OAAO,CAAC,IAAI;gBACf,mBAAmB,EAAE,OAAO,CAAC,IAAI,EAAE,mBAAmB,IAAI;oBACxD,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB;iBACxC;aACF;SACF,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;CACF"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { PackageManager } from "./types.js";
2
+ export declare const SUPPORTED_PACKAGE_MANAGERS: readonly Exclude<PackageManager, "unknown">[];
3
+ export declare const SUPPORTED_PACKAGE_MANAGERS_HINT: string;
4
+ export declare function sanitizePackageName(name: string): string;
5
+ export declare function getRemoveCommand(pm: PackageManager, packageName: string): string;
6
+ export declare function getInstallCommand(pm: PackageManager, packageName: string): string;
7
+ export declare function getPackageCheckCommand(pm: PackageManager, packageName: string): string | undefined;
8
+ export declare function usesDirectPackageCommand(pm: PackageManager): boolean;
9
+ //# sourceMappingURL=ensure-pkg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-pkg.d.ts","sourceRoot":"","sources":["../src/ensure-pkg.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,0BAA0B,EAAE,SAAS,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,EAUnF,CAAC;AACF,eAAO,MAAM,+BAA+B,QAEzC,CAAC;AAEJ,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBxD;AAUD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAuBhF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAuBjF;AAED,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,cAAc,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CA8BpB;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAEpE"}
@@ -0,0 +1,105 @@
1
+ import { createBadRequestError, createPackageManagerError } from "./errors.js";
2
+ export const SUPPORTED_PACKAGE_MANAGERS = [
3
+ "apt",
4
+ "dnf",
5
+ "yum",
6
+ "pacman",
7
+ "apk",
8
+ "zypper",
9
+ "brew",
10
+ "winget",
11
+ "choco",
12
+ ];
13
+ export const SUPPORTED_PACKAGE_MANAGERS_HINT = `Supported package managers: ${SUPPORTED_PACKAGE_MANAGERS.join(", ")}`;
14
+ export function sanitizePackageName(name) {
15
+ const validPackageName = /^[a-zA-Z0-9][a-zA-Z0-9._+-]*$/;
16
+ if (!validPackageName.test(name)) {
17
+ throw createBadRequestError(`Invalid package name: ${name}`, "Package names must start with alphanumeric and contain only letters, numbers, dots, dashes, underscores, or plus signs");
18
+ }
19
+ const dangerousChars = /[;&|`$(){}\[\]<>\\\"'\n\r]/;
20
+ if (dangerousChars.test(name)) {
21
+ throw createBadRequestError("Package name contains potentially dangerous characters", "Remove any shell special characters from the package name");
22
+ }
23
+ return name;
24
+ }
25
+ function powerShellQuote(value) {
26
+ return `'${value.replace(/'/g, "''")}'`;
27
+ }
28
+ function escapeRegExp(value) {
29
+ return value.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&");
30
+ }
31
+ export function getRemoveCommand(pm, packageName) {
32
+ switch (pm) {
33
+ case "apt":
34
+ return `apt-get remove -y ${packageName}`;
35
+ case "dnf":
36
+ return `dnf remove -y ${packageName}`;
37
+ case "yum":
38
+ return `yum remove -y ${packageName}`;
39
+ case "pacman":
40
+ return `pacman -R --noconfirm ${packageName}`;
41
+ case "apk":
42
+ return `apk del ${packageName}`;
43
+ case "zypper":
44
+ return `zypper remove -y ${packageName}`;
45
+ case "brew":
46
+ return `brew uninstall ${packageName}`;
47
+ case "winget":
48
+ return `winget uninstall --id ${packageName} --exact --silent --accept-source-agreements --disable-interactivity`;
49
+ case "choco":
50
+ return `choco uninstall ${packageName} -y --no-progress`;
51
+ default:
52
+ throw createPackageManagerError(`Unsupported package manager: ${pm}`);
53
+ }
54
+ }
55
+ export function getInstallCommand(pm, packageName) {
56
+ switch (pm) {
57
+ case "apt":
58
+ return `apt-get update && apt-get install -y ${packageName}`;
59
+ case "dnf":
60
+ return `dnf install -y ${packageName}`;
61
+ case "yum":
62
+ return `yum install -y ${packageName}`;
63
+ case "pacman":
64
+ return `pacman -S --noconfirm ${packageName}`;
65
+ case "apk":
66
+ return `apk add ${packageName}`;
67
+ case "zypper":
68
+ return `zypper install -y ${packageName}`;
69
+ case "brew":
70
+ return `brew install ${packageName}`;
71
+ case "winget":
72
+ return `winget install --id ${packageName} --exact --silent --accept-source-agreements --accept-package-agreements --disable-interactivity`;
73
+ case "choco":
74
+ return `choco install ${packageName} -y --no-progress`;
75
+ default:
76
+ throw createPackageManagerError(`Unsupported package manager: ${pm}`);
77
+ }
78
+ }
79
+ export function getPackageCheckCommand(pm, packageName) {
80
+ switch (pm) {
81
+ case "apt":
82
+ return `dpkg -l ${packageName} | grep -q '^ii'`;
83
+ case "dnf":
84
+ case "yum":
85
+ return `${pm} list installed ${packageName}`;
86
+ case "pacman":
87
+ return `pacman -Q ${packageName}`;
88
+ case "apk":
89
+ return `apk info -e ${packageName}`;
90
+ case "zypper":
91
+ return `zypper se -i ${packageName}`;
92
+ case "brew":
93
+ return `brew list --versions ${packageName}`;
94
+ case "winget":
95
+ return `$idPattern = ${powerShellQuote(`(^|\\s)${escapeRegExp(packageName)}(\\s|$)`)}; $package = winget list --id ${powerShellQuote(packageName)} --exact --disable-interactivity; if ($LASTEXITCODE -eq 0 -and ($package -match $idPattern)) { exit 0 } exit 1`;
96
+ case "choco":
97
+ return `$package = choco list --exact ${powerShellQuote(packageName)} --limit-output; if ($LASTEXITCODE -eq 0 -and ($package -like ${powerShellQuote(`${packageName}|*`)})) { exit 0 } exit 1`;
98
+ default:
99
+ return undefined;
100
+ }
101
+ }
102
+ export function usesDirectPackageCommand(pm) {
103
+ return pm === "brew" || pm === "winget" || pm === "choco";
104
+ }
105
+ //# sourceMappingURL=ensure-pkg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-pkg.js","sourceRoot":"","sources":["../src/ensure-pkg.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ensure.d.ts","sourceRoot":"","sources":["../src/ensure.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EACV,iBAAiB,EAEjB,aAAa,EACb,WAAW,EACX,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAClE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,eAAe,CAAC,EAAE,OAAO,EACzB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC;IACjE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,UAAU,GAAG,eAAe,CAAC,CAAC;IACnF,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;CACrE;AAwKD,wBAAgB,mBAAmB,CAAC,EAClC,cAAc,EACd,cAAc,EACd,SAAS,GACV,EAAE,iBAAiB,GAAG,aAAa,CAohBnC"}
1
+ {"version":3,"file":"ensure.d.ts","sourceRoot":"","sources":["../src/ensure.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EACV,iBAAiB,EAEjB,aAAa,EACb,WAAW,EACX,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAClE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,eAAe,CAAC,EAAE,OAAO,EACzB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC;IACjE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,UAAU,GAAG,eAAe,CAAC,CAAC;IACnF,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;CACrE;AAsCD,wBAAgB,mBAAmB,CAAC,EAClC,cAAc,EACd,cAAc,EACd,SAAS,GACV,EAAE,iBAAiB,GAAG,aAAa,CAohBnC"}