llng-mcp 0.1.0

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 (114) hide show
  1. package/.github/workflows/ci.yml +77 -0
  2. package/.prettierrc +7 -0
  3. package/LICENSE +661 -0
  4. package/README.md +502 -0
  5. package/dist/__tests__/api-transport.test.d.ts +1 -0
  6. package/dist/__tests__/api-transport.test.js +577 -0
  7. package/dist/__tests__/api-transport.test.js.map +1 -0
  8. package/dist/__tests__/config.test.d.ts +1 -0
  9. package/dist/__tests__/config.test.js +472 -0
  10. package/dist/__tests__/config.test.js.map +1 -0
  11. package/dist/__tests__/integration/api-mode.test.d.ts +1 -0
  12. package/dist/__tests__/integration/api-mode.test.js +199 -0
  13. package/dist/__tests__/integration/api-mode.test.js.map +1 -0
  14. package/dist/__tests__/integration/oidc-rp.test.d.ts +1 -0
  15. package/dist/__tests__/integration/oidc-rp.test.js +120 -0
  16. package/dist/__tests__/integration/oidc-rp.test.js.map +1 -0
  17. package/dist/__tests__/integration/ssh-mode.test.d.ts +1 -0
  18. package/dist/__tests__/integration/ssh-mode.test.js +101 -0
  19. package/dist/__tests__/integration/ssh-mode.test.js.map +1 -0
  20. package/dist/__tests__/k8s-transport.test.d.ts +1 -0
  21. package/dist/__tests__/k8s-transport.test.js +254 -0
  22. package/dist/__tests__/k8s-transport.test.js.map +1 -0
  23. package/dist/__tests__/oidc-tools.test.d.ts +1 -0
  24. package/dist/__tests__/oidc-tools.test.js +457 -0
  25. package/dist/__tests__/oidc-tools.test.js.map +1 -0
  26. package/dist/__tests__/registry.test.d.ts +1 -0
  27. package/dist/__tests__/registry.test.js +96 -0
  28. package/dist/__tests__/registry.test.js.map +1 -0
  29. package/dist/__tests__/ssh-transport.test.d.ts +1 -0
  30. package/dist/__tests__/ssh-transport.test.js +618 -0
  31. package/dist/__tests__/ssh-transport.test.js.map +1 -0
  32. package/dist/__tests__/tools.test.d.ts +1 -0
  33. package/dist/__tests__/tools.test.js +525 -0
  34. package/dist/__tests__/tools.test.js.map +1 -0
  35. package/dist/config.d.ts +65 -0
  36. package/dist/config.js +506 -0
  37. package/dist/config.js.map +1 -0
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.js +42 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/resources/documentation.d.ts +5 -0
  42. package/dist/resources/documentation.js +56 -0
  43. package/dist/resources/documentation.js.map +1 -0
  44. package/dist/tools/cli-utilities.d.ts +3 -0
  45. package/dist/tools/cli-utilities.js +187 -0
  46. package/dist/tools/cli-utilities.js.map +1 -0
  47. package/dist/tools/config.d.ts +6 -0
  48. package/dist/tools/config.js +326 -0
  49. package/dist/tools/config.js.map +1 -0
  50. package/dist/tools/consents.d.ts +3 -0
  51. package/dist/tools/consents.js +39 -0
  52. package/dist/tools/consents.js.map +1 -0
  53. package/dist/tools/instances.d.ts +3 -0
  54. package/dist/tools/instances.js +14 -0
  55. package/dist/tools/instances.js.map +1 -0
  56. package/dist/tools/oidc-rp.d.ts +6 -0
  57. package/dist/tools/oidc-rp.js +246 -0
  58. package/dist/tools/oidc-rp.js.map +1 -0
  59. package/dist/tools/oidc.d.ts +3 -0
  60. package/dist/tools/oidc.js +343 -0
  61. package/dist/tools/oidc.js.map +1 -0
  62. package/dist/tools/secondfactors.d.ts +3 -0
  63. package/dist/tools/secondfactors.js +62 -0
  64. package/dist/tools/secondfactors.js.map +1 -0
  65. package/dist/tools/sessions.d.ts +6 -0
  66. package/dist/tools/sessions.js +300 -0
  67. package/dist/tools/sessions.js.map +1 -0
  68. package/dist/transport/api.d.ts +35 -0
  69. package/dist/transport/api.js +327 -0
  70. package/dist/transport/api.js.map +1 -0
  71. package/dist/transport/interface.d.ts +50 -0
  72. package/dist/transport/interface.js +2 -0
  73. package/dist/transport/interface.js.map +1 -0
  74. package/dist/transport/k8s.d.ts +41 -0
  75. package/dist/transport/k8s.js +303 -0
  76. package/dist/transport/k8s.js.map +1 -0
  77. package/dist/transport/registry.d.ts +20 -0
  78. package/dist/transport/registry.js +91 -0
  79. package/dist/transport/registry.js.map +1 -0
  80. package/dist/transport/ssh.d.ts +37 -0
  81. package/dist/transport/ssh.js +353 -0
  82. package/dist/transport/ssh.js.map +1 -0
  83. package/docker-compose.test.yml +16 -0
  84. package/eslint.config.js +21 -0
  85. package/package.json +38 -0
  86. package/src/__tests__/api-transport.test.ts +746 -0
  87. package/src/__tests__/config.test.ts +587 -0
  88. package/src/__tests__/integration/api-mode.test.ts +229 -0
  89. package/src/__tests__/integration/oidc-rp.test.ts +138 -0
  90. package/src/__tests__/integration/ssh-mode.test.ts +113 -0
  91. package/src/__tests__/k8s-transport.test.ts +342 -0
  92. package/src/__tests__/oidc-tools.test.ts +554 -0
  93. package/src/__tests__/registry.test.ts +110 -0
  94. package/src/__tests__/ssh-transport.test.ts +805 -0
  95. package/src/__tests__/tools.test.ts +735 -0
  96. package/src/config.ts +605 -0
  97. package/src/index.ts +48 -0
  98. package/src/resources/documentation.ts +65 -0
  99. package/src/tools/cli-utilities.ts +207 -0
  100. package/src/tools/config.ts +382 -0
  101. package/src/tools/consents.ts +50 -0
  102. package/src/tools/instances.ts +21 -0
  103. package/src/tools/oidc-rp.ts +299 -0
  104. package/src/tools/oidc.ts +434 -0
  105. package/src/tools/secondfactors.ts +78 -0
  106. package/src/tools/sessions.ts +342 -0
  107. package/src/transport/api.ts +429 -0
  108. package/src/transport/interface.ts +58 -0
  109. package/src/transport/k8s.ts +367 -0
  110. package/src/transport/registry.ts +105 -0
  111. package/src/transport/ssh.ts +430 -0
  112. package/tsconfig.json +16 -0
  113. package/vitest.config.ts +8 -0
  114. package/vitest.integration.config.ts +9 -0
@@ -0,0 +1,303 @@
1
+ import { spawn } from "child_process";
2
+ import { resolvePaths } from "../config.js";
3
+ export class K8sTransport {
4
+ config;
5
+ paths;
6
+ cachedPodName = null;
7
+ constructor(config) {
8
+ this.config = config;
9
+ this.paths = resolvePaths(config.binPrefix);
10
+ }
11
+ async resolvePod() {
12
+ if (this.cachedPodName) {
13
+ return this.cachedPodName;
14
+ }
15
+ if (!this.config.namespace) {
16
+ throw new Error("K8s namespace is required but not configured");
17
+ }
18
+ if (!this.config.deployment && !this.config.podSelector) {
19
+ throw new Error("K8s deployment or podSelector is required but not configured");
20
+ }
21
+ const selector = this.config.podSelector || `app.kubernetes.io/name=${this.config.deployment}`;
22
+ const args = ["get", "pods", "-l", selector, "-o", "jsonpath={.items[0].metadata.name}"];
23
+ if (this.config.context) {
24
+ args.unshift("--context", this.config.context);
25
+ }
26
+ args.unshift("-n", this.config.namespace);
27
+ const podName = await this.kubectl(args);
28
+ if (!podName || podName === "{}" || podName.trim() === "") {
29
+ throw new Error(`No pod found for selector '${selector}' in namespace '${this.config.namespace}'`);
30
+ }
31
+ this.cachedPodName = podName.trim();
32
+ return this.cachedPodName;
33
+ }
34
+ async kubectl(args) {
35
+ return new Promise((resolve, reject) => {
36
+ const proc = spawn("kubectl", args);
37
+ let stdout = "";
38
+ proc.stdout.on("data", (data) => {
39
+ stdout += data.toString();
40
+ });
41
+ proc.stderr.on("data", () => {
42
+ // stderr consumed for security
43
+ });
44
+ proc.on("close", (code) => {
45
+ if (code !== 0) {
46
+ reject(new Error(`kubectl command failed with exit code ${code}`));
47
+ }
48
+ else {
49
+ resolve(stdout);
50
+ }
51
+ });
52
+ proc.on("error", () => {
53
+ reject(new Error("kubectl command execution failed"));
54
+ });
55
+ });
56
+ }
57
+ async kubectlWithStdin(args, input) {
58
+ return new Promise((resolve, reject) => {
59
+ const proc = spawn("kubectl", args);
60
+ let stdout = "";
61
+ proc.stdout.on("data", (data) => {
62
+ stdout += data.toString();
63
+ });
64
+ proc.stderr.on("data", () => {
65
+ // stderr consumed for security
66
+ });
67
+ proc.on("close", (code) => {
68
+ if (code !== 0) {
69
+ reject(new Error(`kubectl command failed with exit code ${code}`));
70
+ }
71
+ else {
72
+ resolve(stdout);
73
+ }
74
+ });
75
+ proc.on("error", () => {
76
+ reject(new Error("kubectl command execution failed"));
77
+ });
78
+ proc.stdin.write(input);
79
+ proc.stdin.end();
80
+ });
81
+ }
82
+ buildExecArgs(podName, command) {
83
+ const args = [];
84
+ if (this.config.context) {
85
+ args.push("--context", this.config.context);
86
+ }
87
+ args.push("-n", this.config.namespace);
88
+ args.push("exec", podName);
89
+ if (this.config.container) {
90
+ args.push("-c", this.config.container);
91
+ }
92
+ args.push("--", ...command);
93
+ return args;
94
+ }
95
+ buildExecStdinArgs(podName, command) {
96
+ const args = [];
97
+ if (this.config.context) {
98
+ args.push("--context", this.config.context);
99
+ }
100
+ args.push("-n", this.config.namespace);
101
+ args.push("exec", "-i", podName);
102
+ if (this.config.container) {
103
+ args.push("-c", this.config.container);
104
+ }
105
+ args.push("--", ...command);
106
+ return args;
107
+ }
108
+ async exec(command) {
109
+ const podName = await this.resolvePod();
110
+ const args = this.buildExecArgs(podName, command);
111
+ return this.kubectl(args);
112
+ }
113
+ async execWithStdin(command, input) {
114
+ const podName = await this.resolvePod();
115
+ const args = this.buildExecStdinArgs(podName, command);
116
+ return this.kubectlWithStdin(args, input);
117
+ }
118
+ async execCli(subArgs) {
119
+ return this.exec([this.paths.cliPath, ...subArgs]);
120
+ }
121
+ async execSessions(subArgs) {
122
+ return this.exec([this.paths.sessionsPath, ...subArgs]);
123
+ }
124
+ pushSessionGetOptions(args, options) {
125
+ if (!options)
126
+ return;
127
+ if (options.persistent) {
128
+ args.push("--persistent");
129
+ }
130
+ if (options.hash) {
131
+ args.push("--hash");
132
+ }
133
+ if (options.refreshTokens) {
134
+ args.push("--refresh-tokens");
135
+ }
136
+ if (options.backend) {
137
+ args.push("--backend", options.backend);
138
+ }
139
+ }
140
+ // Config methods
141
+ async configInfo() {
142
+ const output = await this.execCli(["info"]);
143
+ const lines = output.trim().split("\n");
144
+ const data = {};
145
+ for (const line of lines) {
146
+ const match = line.match(/^(\S+)\s*:\s*(.*)$/);
147
+ if (match) {
148
+ data[match[1]] = match[2];
149
+ }
150
+ }
151
+ return {
152
+ cfgNum: parseInt(data["Num"] || "0", 10),
153
+ cfgAuthor: data["Author"] || "",
154
+ cfgDate: data["Date"] || "",
155
+ cfgLog: data["Log"],
156
+ };
157
+ }
158
+ async configGet(keys) {
159
+ const output = await this.execCli(["-json", "get", ...keys]);
160
+ return JSON.parse(output);
161
+ }
162
+ async configSet(pairs, log) {
163
+ const args = ["set", "-yes", "1"];
164
+ for (const [key, value] of Object.entries(pairs)) {
165
+ args.push(key, String(value));
166
+ }
167
+ if (log) {
168
+ args.push("-log", log);
169
+ }
170
+ await this.execCli(args);
171
+ }
172
+ async configAddKey(key, subkey, value) {
173
+ await this.execCli(["addKey", key, subkey, value]);
174
+ }
175
+ async configDelKey(key, subkey) {
176
+ await this.execCli(["delKey", key, subkey]);
177
+ }
178
+ async configSave() {
179
+ return await this.execCli(["save"]);
180
+ }
181
+ async configRestore(json) {
182
+ await this.execWithStdin([this.paths.cliPath, "restore", "-yes", "1", "-"], json);
183
+ }
184
+ async configMerge(json) {
185
+ await this.execWithStdin([this.paths.cliPath, "merge", "-yes", "1", "-"], json);
186
+ }
187
+ async configRollback() {
188
+ await this.execCli(["rollback", "-yes", "1"]);
189
+ }
190
+ async configUpdateCache() {
191
+ await this.execCli(["update-cache"]);
192
+ }
193
+ async configTestEmail(destination) {
194
+ await this.execCli(["test-email", destination]);
195
+ }
196
+ // Session methods
197
+ async sessionGet(id, options) {
198
+ const args = ["get", id];
199
+ this.pushSessionGetOptions(args, options);
200
+ const output = await this.execSessions(args);
201
+ return JSON.parse(output);
202
+ }
203
+ async sessionSearch(filters) {
204
+ const args = ["search"];
205
+ if (filters.where) {
206
+ for (const [field, value] of Object.entries(filters.where)) {
207
+ args.push("--where", `${field}=${value}`);
208
+ }
209
+ }
210
+ if (filters.select && filters.select.length > 0) {
211
+ args.push("--select", filters.select.join(","));
212
+ }
213
+ if (filters.backend) {
214
+ args.push("--backend", filters.backend);
215
+ }
216
+ if (filters.count) {
217
+ args.push("--count");
218
+ }
219
+ if (filters.refreshTokens) {
220
+ args.push("--refresh-tokens");
221
+ }
222
+ if (filters.persistent) {
223
+ args.push("--persistent");
224
+ }
225
+ if (filters.hash) {
226
+ args.push("--hash");
227
+ }
228
+ if (filters.idOnly) {
229
+ args.push("--id-only");
230
+ }
231
+ const output = await this.execSessions(args);
232
+ return JSON.parse(output);
233
+ }
234
+ async sessionDelete(ids, options) {
235
+ if (options?.where) {
236
+ // Where-based deletion uses lemonldap-ng-sessions delete
237
+ const args = ["delete"];
238
+ for (const [field, value] of Object.entries(options.where)) {
239
+ args.push("--where", `${field}=${value}`);
240
+ }
241
+ this.pushSessionGetOptions(args, options);
242
+ await this.execSessions(args);
243
+ }
244
+ else {
245
+ // ID-based deletion uses llngDeleteSession
246
+ const deleteScriptPath = this.paths.cliPath.replace("lemonldap-ng-cli", "llngDeleteSession");
247
+ for (const id of ids) {
248
+ const args = [deleteScriptPath, id];
249
+ this.pushSessionGetOptions(args, options);
250
+ await this.exec(args);
251
+ }
252
+ }
253
+ }
254
+ async sessionSetKey(id, pairs, options) {
255
+ const args = ["setKey", id];
256
+ for (const [key, value] of Object.entries(pairs)) {
257
+ args.push(key, String(value));
258
+ }
259
+ this.pushSessionGetOptions(args, options);
260
+ await this.execSessions(args);
261
+ }
262
+ async sessionDelKey(id, keys, options) {
263
+ const args = ["delKey", id, ...keys];
264
+ this.pushSessionGetOptions(args, options);
265
+ await this.execSessions(args);
266
+ }
267
+ async sessionBackup(backend, refreshTokens, persistent) {
268
+ const args = ["search"];
269
+ if (backend) {
270
+ args.push("--backend", backend);
271
+ }
272
+ if (refreshTokens) {
273
+ args.push("--refresh-tokens");
274
+ }
275
+ if (persistent) {
276
+ args.push("--persistent");
277
+ }
278
+ const output = await this.execSessions(args);
279
+ return output;
280
+ }
281
+ // 2FA methods
282
+ async secondFactorsGet(_user) {
283
+ throw new Error("secondFactorsGet is not supported via CLI. Use API mode.");
284
+ }
285
+ async secondFactorsDelete(_user, _ids) {
286
+ throw new Error("secondFactorsDelete is not supported via CLI. Use API mode.");
287
+ }
288
+ async secondFactorsDelType(_user, _type) {
289
+ throw new Error("secondFactorsDelType is not supported via CLI. Use API mode.");
290
+ }
291
+ // Consents methods
292
+ async consentsGet(_user) {
293
+ throw new Error("consentsGet is not supported via CLI. Use API mode.");
294
+ }
295
+ async consentsDelete(_user, _ids) {
296
+ throw new Error("consentsDelete is not supported via CLI. Use API mode.");
297
+ }
298
+ async execScript(scriptName, args) {
299
+ const prefix = this.config.binPrefix || "/usr/share/lemonldap-ng/bin";
300
+ return this.exec([`${prefix}/${scriptName}`, ...args]);
301
+ }
302
+ }
303
+ //# sourceMappingURL=k8s.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k8s.js","sourceRoot":"","sources":["../../src/transport/k8s.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAa,YAAY,EAAE,MAAM,cAAc,CAAC;AASvD,MAAM,OAAO,YAAY;IAIH;IAHZ,KAAK,CAAsE;IAC3E,aAAa,GAAkB,IAAI,CAAC;IAE5C,YAAoB,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;QACnC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,0BAA0B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/F,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,oCAAoC,CAAC,CAAC;QAEzF,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAU,CAAC,CAAC;QAE3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CACb,8BAA8B,QAAQ,mBAAmB,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAClF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAc;QAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACpC,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC1B,+BAA+B;YACjC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACrE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,IAAc,EAAE,KAAa;QAC1D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACpC,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC1B,+BAA+B;YACjC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACrE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,OAAe,EAAE,OAAiB;QACtD,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAU,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3B,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,kBAAkB,CAAC,OAAe,EAAE,OAAiB;QAC3D,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAU,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,OAAiB;QAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAiB,EAAE,KAAa;QAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,OAAiB;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAAiB;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEO,qBAAqB,CAAC,IAAc,EAAE,OAA2B;QACvE,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,UAAU;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,IAAI,GAA2B,EAAE,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC/C,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;YACxC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAC/B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAC3B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;SACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAc;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B,EAAE,GAAY;QACtD,MAAM,IAAI,GAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,MAAc,EAAE,KAAa;QAC3D,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,MAAc;QAC5C,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,WAAmB;QACvC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,OAA2B;QACtD,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAsB;QACxC,MAAM,IAAI,GAAa,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAa,EAAE,OAA8B;QAC/D,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,yDAAyD;YACzD,MAAM,IAAI,GAAa,CAAC,QAAQ,CAAC,CAAC;YAClC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,2CAA2C;YAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;YAC7F,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,EAAU,EACV,KAA0B,EAC1B,OAA2B;QAE3B,MAAM,IAAI,GAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,IAAc,EAAE,OAA2B;QACzE,MAAM,IAAI,GAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,OAAgB,EAChB,aAAuB,EACvB,UAAoB;QAEpB,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,cAAc;IACd,KAAK,CAAC,gBAAgB,CAAC,KAAa;QAClC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAAa,EAAE,IAAc;QACrD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,KAAa,EAAE,KAAa;QACrD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAa,EAAE,IAAc;QAChD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,IAAc;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,6BAA6B,CAAC;QACtE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import { LlngMultiConfig, OidcConfig } from "../config.js";
2
+ import { ILlngTransport } from "./interface.js";
3
+ export type TransportRole = "portal" | "manager";
4
+ export declare class TransportRegistry {
5
+ private transports;
6
+ private configs;
7
+ private defaultInstance;
8
+ constructor(multiConfig: LlngMultiConfig);
9
+ private resolveInstance;
10
+ private buildTransport;
11
+ private buildManagerConfig;
12
+ getTransport(instance?: string, role?: TransportRole): ILlngTransport;
13
+ getOidcConfig(instance?: string): OidcConfig | undefined;
14
+ listInstances(): {
15
+ name: string;
16
+ mode: string;
17
+ isDefault: boolean;
18
+ hasManager: boolean;
19
+ }[];
20
+ }
@@ -0,0 +1,91 @@
1
+ import { ApiTransport } from "./api.js";
2
+ import { SshTransport } from "./ssh.js";
3
+ import { K8sTransport } from "./k8s.js";
4
+ export class TransportRegistry {
5
+ transports = new Map();
6
+ configs;
7
+ defaultInstance;
8
+ constructor(multiConfig) {
9
+ this.configs = multiConfig.instances;
10
+ this.defaultInstance = multiConfig.default;
11
+ }
12
+ resolveInstance(instance) {
13
+ const name = instance || this.defaultInstance;
14
+ const config = this.configs[name];
15
+ if (!config) {
16
+ throw new Error(`Unknown instance '${name}'. Available instances: ${Object.keys(this.configs).join(", ")}`);
17
+ }
18
+ return { name, config };
19
+ }
20
+ buildTransport(config) {
21
+ if (config.mode === "api") {
22
+ if (!config.api) {
23
+ throw new Error(`API mode requires 'api' configuration`);
24
+ }
25
+ return new ApiTransport(config.api);
26
+ }
27
+ else if (config.mode === "k8s") {
28
+ if (!config.k8s) {
29
+ throw new Error(`K8s mode requires 'k8s' configuration`);
30
+ }
31
+ return new K8sTransport(config.k8s);
32
+ }
33
+ else {
34
+ return new SshTransport(config.ssh ?? {});
35
+ }
36
+ }
37
+ buildManagerConfig(config) {
38
+ if (!config.manager)
39
+ return undefined;
40
+ const m = config.manager;
41
+ const merged = {
42
+ mode: m.mode ?? config.mode,
43
+ };
44
+ // Deep merge ssh: parent ssh + manager ssh overrides
45
+ if (config.mode === "ssh" || merged.mode === "ssh") {
46
+ merged.ssh = { ...config.ssh, ...m.ssh };
47
+ }
48
+ if (m.api)
49
+ merged.api = m.api;
50
+ else if (config.api && merged.mode === "api")
51
+ merged.api = config.api;
52
+ if (m.k8s)
53
+ merged.k8s = m.k8s;
54
+ else if (config.k8s && merged.mode === "k8s")
55
+ merged.k8s = config.k8s;
56
+ return merged;
57
+ }
58
+ getTransport(instance, role) {
59
+ const { name, config } = this.resolveInstance(instance);
60
+ let entry = this.transports.get(name);
61
+ if (!entry) {
62
+ const portal = this.buildTransport(config);
63
+ entry = { portal };
64
+ this.transports.set(name, entry);
65
+ }
66
+ if (role === "manager") {
67
+ if (!entry.managerResolved) {
68
+ const managerConfig = this.buildManagerConfig(config);
69
+ entry.manager = managerConfig ? this.buildTransport(managerConfig) : undefined;
70
+ entry.managerResolved = true;
71
+ }
72
+ if (entry.manager) {
73
+ return entry.manager;
74
+ }
75
+ }
76
+ return entry.portal;
77
+ }
78
+ getOidcConfig(instance) {
79
+ const { config } = this.resolveInstance(instance);
80
+ return config.oidc;
81
+ }
82
+ listInstances() {
83
+ return Object.entries(this.configs).map(([name, config]) => ({
84
+ name,
85
+ mode: config.mode,
86
+ isDefault: name === this.defaultInstance,
87
+ hasManager: !!config.manager,
88
+ }));
89
+ }
90
+ }
91
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/transport/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { SshConfig } from "../config.js";
2
+ import { ILlngTransport, SessionFilter, ConfigInfo, SessionGetOptions, SessionDeleteOptions } from "./interface.js";
3
+ export declare class SshTransport implements ILlngTransport {
4
+ private config;
5
+ private paths;
6
+ constructor(config: SshConfig);
7
+ private exec;
8
+ private execWithStdin;
9
+ private shellQuote;
10
+ private execCli;
11
+ private execSessions;
12
+ private execConfigEditor;
13
+ private pushSessionGetOptions;
14
+ configInfo(): Promise<ConfigInfo>;
15
+ configGet(keys: string[]): Promise<Record<string, any>>;
16
+ configSet(pairs: Record<string, any>, log?: string): Promise<void>;
17
+ configAddKey(key: string, subkey: string, value: string): Promise<void>;
18
+ configDelKey(key: string, subkey: string): Promise<void>;
19
+ configSave(): Promise<string>;
20
+ configRestore(json: string): Promise<void>;
21
+ configMerge(json: string): Promise<void>;
22
+ configRollback(): Promise<void>;
23
+ configUpdateCache(): Promise<void>;
24
+ configTestEmail(destination: string): Promise<void>;
25
+ sessionGet(id: string, options?: SessionGetOptions): Promise<Record<string, any>>;
26
+ sessionSearch(filters: SessionFilter): Promise<any[]>;
27
+ sessionDelete(ids: string[], options?: SessionDeleteOptions): Promise<void>;
28
+ sessionSetKey(id: string, pairs: Record<string, any>, options?: SessionGetOptions): Promise<void>;
29
+ sessionDelKey(id: string, keys: string[], options?: SessionGetOptions): Promise<void>;
30
+ sessionBackup(backend?: string, refreshTokens?: boolean, persistent?: boolean): Promise<string>;
31
+ secondFactorsGet(_user: string): Promise<any[]>;
32
+ secondFactorsDelete(_user: string, _ids: string[]): Promise<void>;
33
+ secondFactorsDelType(_user: string, _type: string): Promise<void>;
34
+ consentsGet(_user: string): Promise<any[]>;
35
+ consentsDelete(_user: string, _ids: string[]): Promise<void>;
36
+ execScript(scriptName: string, args: string[]): Promise<string>;
37
+ }