@camunda8/cli 2.8.0-alpha.1 → 2.8.0-alpha.10

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 (92) hide show
  1. package/PLUGIN-HELP.md +145 -8
  2. package/README.md +1171 -73
  3. package/dist/command-dispatch.d.ts.map +1 -1
  4. package/dist/command-dispatch.js +3 -2
  5. package/dist/command-dispatch.js.map +1 -1
  6. package/dist/command-framework.d.ts.map +1 -1
  7. package/dist/command-framework.js +22 -1
  8. package/dist/command-framework.js.map +1 -1
  9. package/dist/command-registry.d.ts +49 -311
  10. package/dist/command-registry.d.ts.map +1 -1
  11. package/dist/command-registry.js +46 -33
  12. package/dist/command-registry.js.map +1 -1
  13. package/dist/commands/completion.d.ts +16 -33
  14. package/dist/commands/completion.d.ts.map +1 -1
  15. package/dist/commands/completion.js +31 -689
  16. package/dist/commands/completion.js.map +1 -1
  17. package/dist/commands/mcp-proxy.d.ts +0 -17
  18. package/dist/commands/mcp-proxy.d.ts.map +1 -1
  19. package/dist/commands/mcp-proxy.js +3 -104
  20. package/dist/commands/mcp-proxy.js.map +1 -1
  21. package/dist/commands/open.d.ts +3 -44
  22. package/dist/commands/open.d.ts.map +1 -1
  23. package/dist/commands/open.js +5 -81
  24. package/dist/commands/open.js.map +1 -1
  25. package/dist/commands/plugins.d.ts +2 -8
  26. package/dist/commands/plugins.d.ts.map +1 -1
  27. package/dist/commands/plugins.js +2 -28
  28. package/dist/commands/plugins.js.map +1 -1
  29. package/dist/commands/run.d.ts +8 -8
  30. package/dist/commands/run.d.ts.map +1 -1
  31. package/dist/commands/run.js +60 -60
  32. package/dist/commands/run.js.map +1 -1
  33. package/dist/commands/search.d.ts +2 -39
  34. package/dist/commands/search.d.ts.map +1 -1
  35. package/dist/commands/search.js +2 -83
  36. package/dist/commands/search.js.map +1 -1
  37. package/dist/commands/session.d.ts +1 -0
  38. package/dist/commands/session.d.ts.map +1 -1
  39. package/dist/commands/session.js +5 -0
  40. package/dist/commands/session.js.map +1 -1
  41. package/dist/commands/watch.d.ts +2 -1
  42. package/dist/commands/watch.d.ts.map +1 -1
  43. package/dist/commands/watch.js +17 -8
  44. package/dist/commands/watch.js.map +1 -1
  45. package/dist/completion.d.ts +36 -0
  46. package/dist/completion.d.ts.map +1 -0
  47. package/dist/completion.js +816 -0
  48. package/dist/completion.js.map +1 -0
  49. package/dist/config.d.ts.map +1 -1
  50. package/dist/config.js +19 -1
  51. package/dist/config.js.map +1 -1
  52. package/dist/{commands/deployments.d.ts → deployments.d.ts} +1 -1
  53. package/dist/deployments.d.ts.map +1 -0
  54. package/dist/{commands/deployments.js → deployments.js} +8 -8
  55. package/dist/deployments.js.map +1 -0
  56. package/dist/help.d.ts.map +1 -0
  57. package/dist/{commands/help.js → help.js} +68 -4
  58. package/dist/help.js.map +1 -0
  59. package/dist/index.d.ts +23 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +285 -9
  62. package/dist/index.js.map +1 -1
  63. package/dist/mcp-proxy-helpers.d.ts +23 -0
  64. package/dist/mcp-proxy-helpers.d.ts.map +1 -0
  65. package/dist/mcp-proxy-helpers.js +109 -0
  66. package/dist/mcp-proxy-helpers.js.map +1 -0
  67. package/dist/open-helpers.d.ts +52 -0
  68. package/dist/open-helpers.d.ts.map +1 -0
  69. package/dist/open-helpers.js +88 -0
  70. package/dist/open-helpers.js.map +1 -0
  71. package/dist/plugin-loader.d.ts +61 -2
  72. package/dist/plugin-loader.d.ts.map +1 -1
  73. package/dist/plugin-loader.js +229 -22
  74. package/dist/plugin-loader.js.map +1 -1
  75. package/dist/plugin-version.d.ts +15 -0
  76. package/dist/plugin-version.d.ts.map +1 -0
  77. package/dist/plugin-version.js +37 -0
  78. package/dist/plugin-version.js.map +1 -0
  79. package/dist/search-helpers.d.ts +46 -0
  80. package/dist/search-helpers.d.ts.map +1 -0
  81. package/dist/search-helpers.js +90 -0
  82. package/dist/search-helpers.js.map +1 -0
  83. package/dist/watch-constants.d.ts +7 -0
  84. package/dist/watch-constants.d.ts.map +1 -0
  85. package/dist/watch-constants.js +7 -0
  86. package/dist/watch-constants.js.map +1 -0
  87. package/package.json +11 -7
  88. package/dist/commands/deployments.d.ts.map +0 -1
  89. package/dist/commands/deployments.js.map +0 -1
  90. package/dist/commands/help.d.ts.map +0 -1
  91. package/dist/commands/help.js.map +0 -1
  92. /package/dist/{commands/help.d.ts → help.d.ts} +0 -0
package/dist/index.js CHANGED
@@ -8,13 +8,13 @@ import { fileURLToPath } from "node:url";
8
8
  import { parseArgs } from "node:util";
9
9
  import { createClient } from "./client.js";
10
10
  import { COMMAND_DISPATCH } from "./command-dispatch.js";
11
- import { COMMAND_REGISTRY, deriveParseArgsOptions, getCommandDef, resolveAlias, } from "./command-registry.js";
11
+ import { COMMAND_REGISTRY, deriveParseArgsOptions, GLOBAL_FLAGS, getCommandDef, resolveAlias, } from "./command-registry.js";
12
12
  import { detectUnknownFlags, validateFlags } from "./command-validation.js";
13
- import { refreshCompletionsIfStale } from "./commands/completion.js";
14
- import { showCommandHelp, showHelp, showVerbResources, showVersion, } from "./commands/help.js";
13
+ import { refreshCompletionsIfStale } from "./completion.js";
15
14
  import { loadSessionState, resolveTenantId } from "./config.js";
15
+ import { showCommandHelp, showHelp, showVerbResources, showVersion, } from "./help.js";
16
16
  import { getLogger } from "./logger.js";
17
- import { executePluginCommand, loadInstalledPlugins } from "./plugin-loader.js";
17
+ import { executePluginCommand, getPluginCommands, isPassthroughPluginCommand, loadInstalledPlugins, } from "./plugin-loader.js";
18
18
  import { c8ctl } from "./runtime.js";
19
19
  import { printUpdateNotification, startUpdateCheck } from "./update-check.js";
20
20
  /**
@@ -67,6 +67,181 @@ export function resolveProcessDefinitionId(values) {
67
67
  str(values.processDefinitionId) ||
68
68
  str(values.bpmnProcessId));
69
69
  }
70
+ /**
71
+ * Return the raw argv tokens that follow the verb position, where the
72
+ * verb position is found by walking from the start and skipping leading
73
+ * GLOBAL_FLAGS only (consuming the value of string-typed global flags).
74
+ * The first non-flag token — or any unknown `--*`/`-*` token — is
75
+ * treated as the verb candidate.
76
+ *
77
+ * This avoids `argv.indexOf(verb)`, which is unsafe because the verb
78
+ * string may also appear as the value of a global string flag (e.g.
79
+ * `--profile <verb>`). Returns `[]` if no verb token is found at or
80
+ * after the scan position.
81
+ */
82
+ export function sliceArgvAfterVerb(argv, verb) {
83
+ const stringGlobalNames = new Set();
84
+ const stringGlobalShorts = new Set();
85
+ const booleanGlobalNames = new Set();
86
+ const booleanGlobalShorts = new Set();
87
+ for (const [name, def] of Object.entries(GLOBAL_FLAGS)) {
88
+ const short = "short" in def ? def.short : undefined;
89
+ if (def.type === "string") {
90
+ stringGlobalNames.add(name);
91
+ if (short)
92
+ stringGlobalShorts.add(short);
93
+ }
94
+ else {
95
+ booleanGlobalNames.add(name);
96
+ if (short)
97
+ booleanGlobalShorts.add(short);
98
+ }
99
+ }
100
+ let i = 0;
101
+ while (i < argv.length) {
102
+ const tok = argv[i];
103
+ if (tok === "--") {
104
+ // GNU `--` convention: end of options. The next token is the
105
+ // verb candidate. Skip the separator and continue scanning so
106
+ // `c8ctl -- <verb> <args...>` dispatches correctly with the
107
+ // full post-verb argv (rather than bailing and forwarding []).
108
+ i++;
109
+ continue;
110
+ }
111
+ if (tok.startsWith("--")) {
112
+ const eq = tok.indexOf("=");
113
+ const name = eq >= 0 ? tok.slice(2, eq) : tok.slice(2);
114
+ if (booleanGlobalNames.has(name)) {
115
+ i++;
116
+ continue;
117
+ }
118
+ if (stringGlobalNames.has(name)) {
119
+ i += eq < 0 ? 2 : 1;
120
+ continue;
121
+ }
122
+ // Unknown long flag — do not silently consume a value. Fall through
123
+ // to the verb match below (and bail if it doesn't match).
124
+ }
125
+ else if (tok.startsWith("-") && tok.length === 2) {
126
+ const short = tok.slice(1);
127
+ if (booleanGlobalShorts.has(short)) {
128
+ i++;
129
+ continue;
130
+ }
131
+ if (stringGlobalShorts.has(short)) {
132
+ i += 2;
133
+ continue;
134
+ }
135
+ }
136
+ // First token that is not a leading GLOBAL_FLAG must be the verb.
137
+ if (tok === verb)
138
+ return argv.slice(i + 1);
139
+ return [];
140
+ }
141
+ return [];
142
+ }
143
+ /**
144
+ * Strip GLOBAL_FLAGS (and the value of any string-typed global flag) from
145
+ * a raw argv slice before forwarding to a passthrough plugin handler
146
+ * (#366). GLOBAL_FLAGS already affect the c8ctl runtime via their
147
+ * regular handling in `main()`; the plugin must not see them again.
148
+ *
149
+ * Conservative behaviour: an isolated `--` terminator is preserved and
150
+ * everything after it is forwarded verbatim, matching POSIX convention.
151
+ */
152
+ export function stripGlobalFlags(argv) {
153
+ const booleanFlags = new Set();
154
+ const stringFlags = new Set();
155
+ const booleanShorts = new Set();
156
+ const stringShorts = new Set();
157
+ for (const [name, def] of Object.entries(GLOBAL_FLAGS)) {
158
+ const short = "short" in def ? def.short : undefined;
159
+ if (def.type === "boolean") {
160
+ booleanFlags.add(name);
161
+ if (short)
162
+ booleanShorts.add(short);
163
+ }
164
+ else {
165
+ stringFlags.add(name);
166
+ if (short)
167
+ stringShorts.add(short);
168
+ }
169
+ }
170
+ const out = [];
171
+ let i = 0;
172
+ let sawTerminator = false;
173
+ while (i < argv.length) {
174
+ const tok = argv[i];
175
+ if (sawTerminator) {
176
+ out.push(tok);
177
+ i++;
178
+ continue;
179
+ }
180
+ if (tok === "--") {
181
+ sawTerminator = true;
182
+ out.push(tok);
183
+ i++;
184
+ continue;
185
+ }
186
+ if (tok.startsWith("--")) {
187
+ const eq = tok.indexOf("=");
188
+ const name = eq >= 0 ? tok.slice(2, eq) : tok.slice(2);
189
+ if (booleanFlags.has(name) || stringFlags.has(name)) {
190
+ if (eq < 0 && stringFlags.has(name))
191
+ i++; // consume value
192
+ i++;
193
+ continue;
194
+ }
195
+ }
196
+ else if (tok.startsWith("-") && tok.length === 2) {
197
+ const short = tok.slice(1);
198
+ if (booleanShorts.has(short)) {
199
+ i++;
200
+ continue;
201
+ }
202
+ if (stringShorts.has(short)) {
203
+ i += 2; // consume short flag and its value
204
+ continue;
205
+ }
206
+ }
207
+ out.push(tok);
208
+ i++;
209
+ }
210
+ return out;
211
+ }
212
+ /**
213
+ * Remove tokens for blocked plugin flags from an argv slice so they cannot
214
+ * shift positionals during the plugin-flag re-parse.
215
+ *
216
+ * The built-in may declare a blocked flag as boolean while the plugin
217
+ * declared it as string. In that case the user supplied a value token
218
+ * (--name value) that the built-in parser leaves in positionals. We use
219
+ * the PLUGIN's declared type to decide whether to strip a following token.
220
+ */
221
+ function stripBlockedFlagTokens(argv, blocked, pluginFlagDefs) {
222
+ const out = [];
223
+ let i = 0;
224
+ while (i < argv.length) {
225
+ const arg = argv[i];
226
+ if (arg.startsWith("--")) {
227
+ const eqIdx = arg.indexOf("=");
228
+ const name = eqIdx >= 0 ? arg.slice(2, eqIdx) : arg.slice(2);
229
+ if (blocked.has(name)) {
230
+ if (eqIdx < 0 &&
231
+ pluginFlagDefs[name]?.type === "string" &&
232
+ i + 1 < argv.length &&
233
+ !argv[i + 1].startsWith("-")) {
234
+ i++;
235
+ }
236
+ i++;
237
+ continue;
238
+ }
239
+ }
240
+ out.push(arg);
241
+ i++;
242
+ }
243
+ return out;
244
+ }
70
245
  /**
71
246
  * Warn about unrecognized flags for a verb × resource combination.
72
247
  */
@@ -92,6 +267,22 @@ async function main() {
92
267
  // Fire-and-forget: check for CLI updates in the background
93
268
  startUpdateCheck(c8ctl.version);
94
269
  const { values, positionals } = parseCliArgs();
270
+ // Apply per-invocation output mode override (#356).
271
+ // Precedence: --json flag > C8CTL_OUTPUT_MODE env var > persisted session.
272
+ // Setting `c8ctl.outputMode` directly is in-memory only; saveSessionState
273
+ // uses the separately-tracked persistedOutputMode from config.ts so this
274
+ // override never leaks back to disk.
275
+ if (values.json === true) {
276
+ c8ctl.outputMode = "json";
277
+ }
278
+ else if (process.env.C8CTL_OUTPUT_MODE === "json") {
279
+ c8ctl.outputMode = "json";
280
+ }
281
+ else if (process.env.C8CTL_OUTPUT_MODE === "text") {
282
+ c8ctl.outputMode = "text";
283
+ }
284
+ // Any other C8CTL_OUTPUT_MODE value (including unset, empty, or
285
+ // "yaml"/typo) falls through to the persisted mode loaded above.
95
286
  // Initialize logger with current output mode from c8ctl runtime
96
287
  const logger = getLogger(c8ctl.outputMode);
97
288
  // Resolve sort order from --asc / --desc flags (default: asc)
@@ -157,6 +348,95 @@ async function main() {
157
348
  }
158
349
  return;
159
350
  }
351
+ // Check if this is a plugin command — only for verbs not claimed by a built-in.
352
+ // Placed after help/menu handling so those reserved verbs can never be shadowed.
353
+ const pluginCommands = getPluginCommands();
354
+ if (verb && Object.hasOwn(pluginCommands, verb) && !getCommandDef(verb)) {
355
+ const cmd = pluginCommands[verb];
356
+ const cmdFlagDefs = typeof cmd !== "function" ? cmd.flags : undefined;
357
+ // Passthrough plugin contract (#366): strip GLOBAL_FLAGS from the
358
+ // raw argv following the verb token and forward the rest verbatim.
359
+ // GLOBAL_FLAGS already affect the c8ctl runtime via their regular
360
+ // handling earlier in main(); the plugin must not see them again.
361
+ // Validation at load time guarantees passthrough commands are the
362
+ // bare-function form and never carry a `flags` declaration.
363
+ if (isPassthroughPluginCommand(verb)) {
364
+ // Locate the verb token by walking process.argv from the start and
365
+ // skipping leading GLOBAL_FLAGS (consuming string-flag values).
366
+ // A naive `indexOf(verb)` is unsafe because `verb` may also appear
367
+ // as the value of a global string flag (e.g. `--profile <verb>`).
368
+ const rawAfterVerb = sliceArgvAfterVerb(process.argv.slice(2), verb);
369
+ const forwarded = stripGlobalFlags(rawAfterVerb);
370
+ await executePluginCommand(verb, forwarded);
371
+ return;
372
+ }
373
+ if (cmdFlagDefs) {
374
+ // Use built-in flags as a blacklist: start from the full built-in
375
+ // option set, then add plugin flags only when the name is not already
376
+ // taken. This prevents a plugin flag from silently changing a built-in
377
+ // flag's parse type.
378
+ const builtinOptions = deriveParseArgsOptions();
379
+ const builtinShorts = new Set(Object.values(builtinOptions)
380
+ .map((o) => o.short)
381
+ .filter((s) => s !== undefined));
382
+ const mergedOptions = { ...builtinOptions };
383
+ const blockedFlags = new Set();
384
+ for (const [name, def] of Object.entries(cmdFlagDefs)) {
385
+ if (name in builtinOptions) {
386
+ logger.warn(`Plugin flag --${name} conflicts with a built-in flag and will not be parsed`);
387
+ blockedFlags.add(name);
388
+ continue;
389
+ }
390
+ const short = def.short && builtinShorts.has(def.short) ? undefined : def.short;
391
+ if (def.short && !short) {
392
+ logger.warn(`Plugin flag --${name} short alias -${def.short} conflicts with a built-in alias and will be ignored`);
393
+ }
394
+ mergedOptions[name] = {
395
+ type: def.type,
396
+ ...(short && { short }),
397
+ };
398
+ }
399
+ const filteredArgv = stripBlockedFlagTokens(process.argv.slice(2), blockedFlags, cmdFlagDefs);
400
+ let pluginParsed;
401
+ try {
402
+ pluginParsed = parseArgs({
403
+ args: filteredArgv,
404
+ options: mergedOptions,
405
+ allowPositionals: true,
406
+ strict: false,
407
+ });
408
+ }
409
+ catch (error) {
410
+ const message = error instanceof Error ? error.message : String(error);
411
+ console.error(`Error parsing arguments: ${message}`);
412
+ process.exit(1);
413
+ }
414
+ const extractedFlags = {};
415
+ for (const [flagName, def] of Object.entries(cmdFlagDefs)) {
416
+ if (blockedFlags.has(flagName))
417
+ continue;
418
+ const raw = pluginParsed.values[flagName];
419
+ // Repeated string flags arrive as arrays — take the last value
420
+ // (last-write-wins), matching built-in flag normalization.
421
+ const value = def.type === "string" && Array.isArray(raw)
422
+ ? (raw.findLast((v) => typeof v === "string") ?? undefined)
423
+ : raw;
424
+ if (value !== undefined) {
425
+ extractedFlags[flagName] = value;
426
+ }
427
+ if (def.required === true && value === undefined) {
428
+ logger.error(`--${flagName} is required`);
429
+ process.exit(1);
430
+ }
431
+ }
432
+ const [_verb, _resource, ...pluginArgs] = pluginParsed.positionals;
433
+ await executePluginCommand(verb, _resource ? [_resource, ...pluginArgs] : pluginArgs, extractedFlags);
434
+ }
435
+ else {
436
+ await executePluginCommand(verb, resource ? [resource, ...args] : args);
437
+ }
438
+ return;
439
+ }
160
440
  // Normalize resource
161
441
  const normalizedResource = resource ? resolveAlias(resource) : "";
162
442
  // Resource validation guard — single chokepoint for all verbs that require a resource.
@@ -237,11 +517,7 @@ async function main() {
237
517
  await handler.execute(ctx, values, args);
238
518
  return;
239
519
  }
240
- // Try to execute plugin command (before unknown-command error)
241
- if (await executePluginCommand(verb, resource ? [resource, ...args] : args)) {
242
- return;
243
- }
244
- // Unknown command
520
+ // Unknown command (plugin check was already done above)
245
521
  logger.error(`Unknown command: ${verb}${resource ? ` ${resource}` : ""}`);
246
522
  logger.info('Run "c8 help" for usage information');
247
523
  process.exit(1);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Pure helpers extracted from `src/commands/mcp-proxy.ts` so tests can
3
+ * import them without violating the test→commands import boundary
4
+ * (#291). The handler itself remains in `src/commands/mcp-proxy.ts`.
5
+ */
6
+ import type { CamundaClient } from "@camunda8/orchestration-cluster-api";
7
+ import { type Logger } from "./logger.ts";
8
+ /**
9
+ * Creates a custom fetch function that injects Camunda authentication headers
10
+ * and handles token refresh on 401 errors.
11
+ *
12
+ * @param camundaClient - The Camunda client instance for auth
13
+ * @param timeout - Request timeout in milliseconds (default: 60000)
14
+ * @returns Custom fetch function compatible with MCP SDK transport
15
+ */
16
+ export declare function createCamundaFetch(camundaClient: CamundaClient, logger: Logger, timeout?: number): typeof fetch;
17
+ /**
18
+ * Normalize remote MCP URL to ensure it points to the MCP endpoint (assuming it ends with /mcp/cluster).
19
+ * - If URL has no path or just "/", append "/mcp/cluster"
20
+ * - If URL ends with "/v2" or "/v2/", replace with "/mcp/cluster"
21
+ */
22
+ export declare function normalizeRemoteMcpUrl(url: string, mcpServerPath: string): string;
23
+ //# sourceMappingURL=mcp-proxy-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-proxy-helpers.d.ts","sourceRoot":"","sources":["../src/mcp-proxy-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CACjC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAc,GACrB,OAAO,KAAK,CA0Fd;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACpC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,GACnB,MAAM,CAqBR"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Pure helpers extracted from `src/commands/mcp-proxy.ts` so tests can
3
+ * import them without violating the test→commands import boundary
4
+ * (#291). The handler itself remains in `src/commands/mcp-proxy.ts`.
5
+ */
6
+ import { isRecord } from "./logger.js";
7
+ /**
8
+ * Creates a custom fetch function that injects Camunda authentication headers
9
+ * and handles token refresh on 401 errors.
10
+ *
11
+ * @param camundaClient - The Camunda client instance for auth
12
+ * @param timeout - Request timeout in milliseconds (default: 60000)
13
+ * @returns Custom fetch function compatible with MCP SDK transport
14
+ */
15
+ export function createCamundaFetch(camundaClient, logger, timeout = 60000) {
16
+ return async (input, init) => {
17
+ // Get fresh auth headers from orchestration-cluster-api
18
+ const authHeaders = await camundaClient.getAuthHeaders();
19
+ // Merge with existing headers
20
+ const headers = new Headers(init?.headers);
21
+ Object.entries(authHeaders).forEach(([key, value]) => {
22
+ headers.set(key, value);
23
+ });
24
+ // Create timeout abort controller
25
+ const timeoutController = new AbortController();
26
+ const timeoutId = setTimeout(() => timeoutController.abort(), timeout);
27
+ try {
28
+ // Merge abort signals (SDK's signal + timeout signal)
29
+ const signal = init?.signal
30
+ ? AbortSignal.any([init.signal, timeoutController.signal])
31
+ : timeoutController.signal;
32
+ // Make the request with merged headers
33
+ const response = await fetch(input, { ...init, headers, signal });
34
+ // Handle 401 with token refresh and retry
35
+ if (response.status === 401) {
36
+ clearTimeout(timeoutId);
37
+ logger.info("Received 401 (Unauthorized) response, attempting token refresh and retrying");
38
+ // Force token refresh and rebuild headers
39
+ await camundaClient.forceAuthRefresh();
40
+ const freshHeaders = await camundaClient.getAuthHeaders();
41
+ const retryHeaders = new Headers(init?.headers);
42
+ Object.entries(freshHeaders).forEach(([key, value]) => {
43
+ retryHeaders.set(key, value);
44
+ });
45
+ // Retry with fresh token and timeout
46
+ const retryTimeoutController = new AbortController();
47
+ const retryTimeoutId = setTimeout(() => retryTimeoutController.abort(), timeout);
48
+ try {
49
+ const retrySignal = init?.signal
50
+ ? AbortSignal.any([init.signal, retryTimeoutController.signal])
51
+ : retryTimeoutController.signal;
52
+ return await fetch(input, {
53
+ ...init,
54
+ headers: retryHeaders,
55
+ signal: retrySignal,
56
+ });
57
+ }
58
+ finally {
59
+ clearTimeout(retryTimeoutId);
60
+ }
61
+ }
62
+ clearTimeout(timeoutId);
63
+ return response;
64
+ }
65
+ catch (error) {
66
+ clearTimeout(timeoutId);
67
+ // Convert AbortError to more descriptive timeout error
68
+ if (error instanceof Error && error.name === "AbortError") {
69
+ throw new Error(`Request timeout after ${timeout}ms`);
70
+ }
71
+ // Walk the cause chain to handle both Node 22 (shallow) and Node 24 (deeper nesting)
72
+ let cause = error instanceof Error ? error.cause : undefined;
73
+ while (cause != null) {
74
+ if (isRecord(cause) && cause.code === "ECONNREFUSED") {
75
+ const url = typeof input === "string" ? input : input.toString();
76
+ throw new Error(`Connection refused: Unable to connect to ${url}. Please verify the server is running and accessible.`);
77
+ }
78
+ cause = isRecord(cause) ? cause.cause : undefined;
79
+ }
80
+ throw error;
81
+ }
82
+ };
83
+ }
84
+ /**
85
+ * Normalize remote MCP URL to ensure it points to the MCP endpoint (assuming it ends with /mcp/cluster).
86
+ * - If URL has no path or just "/", append "/mcp/cluster"
87
+ * - If URL ends with "/v2" or "/v2/", replace with "/mcp/cluster"
88
+ */
89
+ export function normalizeRemoteMcpUrl(url, mcpServerPath) {
90
+ try {
91
+ const urlObj = new URL(url);
92
+ // If path is empty or just "/", append MCP server path
93
+ if (urlObj.pathname === "" || urlObj.pathname === "/") {
94
+ urlObj.pathname = mcpServerPath;
95
+ return urlObj.toString();
96
+ }
97
+ // If path ends with "/v2" (with or without trailing slash), replace with MCP server path
98
+ if (urlObj.pathname.match(/\/v2\/?$/)) {
99
+ urlObj.pathname = urlObj.pathname.replace(/\/v2\/?$/, mcpServerPath);
100
+ return urlObj.toString();
101
+ }
102
+ // Already ends with MCP server path or has custom path - keep as is
103
+ return url;
104
+ }
105
+ catch (_e) {
106
+ return url;
107
+ }
108
+ }
109
+ //# sourceMappingURL=mcp-proxy-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-proxy-helpers.js","sourceRoot":"","sources":["../src/mcp-proxy-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAe,MAAM,aAAa,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CACjC,aAA4B,EAC5B,MAAc,EACd,UAAkB,KAAK;IAEvB,OAAO,KAAK,EACX,KAA6B,EAC7B,IAAkB,EACE,EAAE;QACtB,wDAAwD;QACxD,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,CAAC;QAEzD,8BAA8B;QAC9B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACpD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,kCAAkC;QAClC,MAAM,iBAAiB,GAAG,IAAI,eAAe,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAEvE,IAAI,CAAC;YACJ,sDAAsD;YACtD,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM;gBAC1B,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAC1D,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAE5B,uCAAuC;YACvC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAElE,0CAA0C;YAC1C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC7B,YAAY,CAAC,SAAS,CAAC,CAAC;gBAExB,MAAM,CAAC,IAAI,CACV,6EAA6E,CAC7E,CAAC;gBAEF,0CAA0C;gBAC1C,MAAM,aAAa,CAAC,gBAAgB,EAAE,CAAC;gBACvC,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,CAAC;gBAC1D,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAChD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBACrD,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC9B,CAAC,CAAC,CAAC;gBAEH,qCAAqC;gBACrC,MAAM,sBAAsB,GAAG,IAAI,eAAe,EAAE,CAAC;gBACrD,MAAM,cAAc,GAAG,UAAU,CAChC,GAAG,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,EACpC,OAAO,CACP,CAAC;gBAEF,IAAI,CAAC;oBACJ,MAAM,WAAW,GAAG,IAAI,EAAE,MAAM;wBAC/B,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;wBAC/D,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC;oBAEjC,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE;wBACzB,GAAG,IAAI;wBACP,OAAO,EAAE,YAAY;wBACrB,MAAM,EAAE,WAAW;qBACnB,CAAC,CAAC;gBACJ,CAAC;wBAAS,CAAC;oBACV,YAAY,CAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;YACF,CAAC;YAED,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,QAAQ,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,uDAAuD;YACvD,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,IAAI,CAAC,CAAC;YACvD,CAAC;YAED,qFAAqF;YACrF,IAAI,KAAK,GAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,OAAO,KAAK,IAAI,IAAI,EAAE,CAAC;gBACtB,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACtD,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACjE,MAAM,IAAI,KAAK,CACd,4CAA4C,GAAG,uDAAuD,CACtG,CAAC;gBACH,CAAC;gBACD,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YACnD,CAAC;YAED,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACpC,GAAW,EACX,aAAqB;IAErB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5B,uDAAuD;QACvD,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;YACvD,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC;YAChC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC;QAED,yFAAyF;QACzF,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YACrE,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC;QAED,oEAAoE;QACpE,OAAO,GAAG,CAAC;IACZ,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACb,OAAO,GAAG,CAAC;IACZ,CAAC;AACF,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Pure helpers extracted from `src/commands/open.ts` so tests can import
3
+ * them without violating the test→commands import boundary (#291). The
4
+ * `openAppCommand` / `feedbackCommand` handlers in `src/commands/open.ts`
5
+ * re-import these.
6
+ */
7
+ export declare const OPEN_APPS: readonly ["operate", "tasklist", "modeler", "optimize"];
8
+ export type AppName = (typeof OPEN_APPS)[number];
9
+ export declare function isAppName(value: string): value is AppName;
10
+ /**
11
+ * Derive the URL of a Camunda web application from the cluster base URL.
12
+ *
13
+ * Only supported for self-managed clusters where the base URL is the REST API
14
+ * endpoint (e.g. `http://localhost:8080/v2`). Returns `null` when the URL
15
+ * does not look like a self-managed gateway (no `/v<n>` suffix).
16
+ */
17
+ export declare function deriveAppUrl(baseUrl: string, app: AppName): string | null;
18
+ /**
19
+ * Determine the platform-appropriate command and arguments to open a URL.
20
+ *
21
+ * WSL is detected explicitly because it reports `linux`, but should use the
22
+ * Windows opener via interop rather than relying on `xdg-open`.
23
+ *
24
+ * Accepts optional overrides for testing.
25
+ */
26
+ export declare function getBrowserCommand(url: string, plat?: NodeJS.Platform, env?: Record<string, string | undefined>): {
27
+ command: string;
28
+ args: string[];
29
+ };
30
+ /**
31
+ * Open a URL in the default system browser.
32
+ * Works on macOS, Linux, native Windows, and WSL.
33
+ */
34
+ export declare function openUrl(url: string): void;
35
+ /**
36
+ * Validated inputs for the open command.
37
+ */
38
+ export interface OpenAppInput {
39
+ app: AppName;
40
+ profile?: string;
41
+ dryRun?: boolean;
42
+ }
43
+ /**
44
+ * Validate raw CLI positional + options for the open command.
45
+ * Returns a fully validated and type-narrowed input object.
46
+ * Exits with code 1 on invalid input.
47
+ */
48
+ export declare function validateOpenAppOptions(app: string | undefined, options: {
49
+ profile?: string;
50
+ dryRun?: boolean;
51
+ }): OpenAppInput;
52
+ //# sourceMappingURL=open-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-helpers.d.ts","sourceRoot":"","sources":["../src/open-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,eAAO,MAAM,SAAS,yDAKZ,CAAC;AACX,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,OAAO,CAGzD;AAKD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAMzE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,CAAC,QAAqB,EAClC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACnD;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAYrC;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAkBzC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAID;;;;GAIG;AACH,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7C,YAAY,CAWd"}