@camunda8/cli 2.6.0-alpha.5 → 2.6.0-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/EXAMPLES.md CHANGED
@@ -831,6 +831,9 @@ c8 cluster start
831
831
  # Start a specific version
832
832
  c8 cluster start 8.9.0-alpha5
833
833
 
834
+ # Start the latest cached release for a major.minor version
835
+ c8 cluster start 8.8
836
+
834
837
  # Start with debug output (streams raw c8run logs)
835
838
  c8 cluster start --debug
836
839
  ```
@@ -841,6 +844,49 @@ c8 cluster start --debug
841
844
  c8 cluster stop
842
845
  ```
843
846
 
847
+ ### Cluster Status
848
+
849
+ ```bash
850
+ # Check if a cluster is running and see connection details
851
+ c8 cluster status
852
+ ```
853
+
854
+ ### Stream Logs
855
+
856
+ ```bash
857
+ # Stream log output from the running cluster (Ctrl+C to stop)
858
+ c8 cluster logs
859
+ ```
860
+
861
+ ### List Installed Versions
862
+
863
+ ```bash
864
+ # Show locally cached versions and version aliases
865
+ c8 cluster list
866
+ ```
867
+
868
+ ### List Available Remote Versions
869
+
870
+ ```bash
871
+ # Query the Camunda Download Center for all available versions
872
+ c8 cluster list-remote
873
+ ```
874
+
875
+ ### Install a Version Without Starting
876
+
877
+ ```bash
878
+ # Pre-download a version for later use
879
+ c8 cluster install 8.8
880
+ c8 cluster install alpha
881
+ ```
882
+
883
+ ### Delete a Cached Version
884
+
885
+ ```bash
886
+ # Remove a locally cached version to reclaim disk space
887
+ c8 cluster delete 8.8
888
+ ```
889
+
844
890
  ### Typical Local Development Workflow
845
891
 
846
892
  ```bash
package/dist/client.d.ts CHANGED
@@ -17,14 +17,16 @@ export declare const DEFAULT_PAGE_SIZE = 100;
17
17
  export declare const DEFAULT_MAX_ITEMS = 1000000;
18
18
  /**
19
19
  * Paginated API response shape (the page metadata lives alongside items).
20
+ * Matches the SDK 8.9+ SearchQueryResponse structure where page fields are
21
+ * required but cursors are nullable.
20
22
  */
21
23
  type PagedResponse<T> = {
22
- items?: T[];
23
- page?: {
24
- totalItems?: bigint | number;
25
- endCursor?: string;
26
- startCursor?: string;
27
- hasMoreTotalItems?: boolean;
24
+ items: T[];
25
+ page: {
26
+ totalItems: number | bigint;
27
+ endCursor: string | null;
28
+ startCursor: string | null;
29
+ hasMoreTotalItems: boolean;
28
30
  };
29
31
  };
30
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAuB,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAGnH;;GAEG;AACH,wBAAgB,YAAY,CAC1B,WAAW,CAAC,EAAE,MAAM,EACpB,mBAAmB,GAAE,OAAO,CAAC,cAAc,CAAM,GAChD,aAAa,CAgCf;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,UAAY,CAAC;AAE3C;;GAEG;AACH,KAAK,aAAa,CAAC,CAAC,IAAI;IACtB,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACZ,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAChE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,QAAQ,SAAoB,EAC5B,QAAQ,SAAoB,GAC3B,OAAO,CAAC,CAAC,EAAE,CAAC,CAuCd"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAuB,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAGnH;;GAEG;AACH,wBAAgB,YAAY,CAC1B,WAAW,CAAC,EAAE,MAAM,EACpB,mBAAmB,GAAE,OAAO,CAAC,cAAc,CAAM,GAChD,aAAa,CAgCf;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,UAAY,CAAC;AAE3C;;;;GAIG;AACH,KAAK,aAAa,CAAC,CAAC,IAAI;IACtB,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;QAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAChE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,QAAQ,SAAoB,EAC5B,QAAQ,SAAoB,GAC3B,OAAO,CAAC,CAAC,EAAE,CAAC,CAsCd"}
package/dist/client.js CHANGED
@@ -70,21 +70,20 @@ export async function fetchAllPages(searchFn, filter = {}, pageSize = DEFAULT_PA
70
70
  },
71
71
  };
72
72
  const result = await searchFn(pageFilter, consistencyOpts);
73
- if (result.items?.length) {
73
+ if (result.items.length) {
74
74
  allItems.push(...result.items);
75
75
  }
76
76
  if (allItems.length >= maxItems) {
77
77
  allItems.length = maxItems;
78
78
  break;
79
79
  }
80
- const endCursor = result.page?.endCursor;
81
- // totalItems is BigInt from the SDK's Zod schema (z.coerce.bigint()); convert to number
82
- const totalItems = result.page?.totalItems !== undefined ? Number(result.page.totalItems) : undefined;
80
+ const endCursor = result.page.endCursor;
81
+ const totalItems = Number(result.page.totalItems);
83
82
  if (!endCursor || seenCursors.has(endCursor))
84
83
  break;
85
- if (totalItems !== undefined && allItems.length >= totalItems)
84
+ if (allItems.length >= totalItems)
86
85
  break;
87
- if (!result.items?.length)
86
+ if (!result.items.length)
88
87
  break;
89
88
  seenCursors.add(endCursor);
90
89
  cursor = endCursor;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAA2C,MAAM,qCAAqC,CAAC;AACnH,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,WAAoB,EACpB,sBAA+C,EAAE;IAEjD,MAAM,MAAM,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEjD,kCAAkC;IAClC,MAAM,SAAS,GAAsC;QACnD,oBAAoB,EAAE,MAAM,CAAC,OAAO;KACrC,CAAC;IAEF,qCAAqC;IACrC,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC3C,SAAS,CAAC,qBAAqB,GAAG,OAAO,CAAC;QAC1C,SAAS,CAAC,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC9C,SAAS,CAAC,qBAAqB,GAAG,MAAM,CAAC,YAAY,CAAC;QACtD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,QAAQ,CAAC;QACrD,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,SAAS,CAAC,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChD,CAAC;IACH,CAAC;IACD,0CAA0C;SACrC,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC5C,SAAS,CAAC,qBAAqB,GAAG,OAAO,CAAC;QAC1C,SAAS,CAAC,2BAA2B,GAAG,MAAM,CAAC,QAAQ,CAAC;QACxD,SAAS,CAAC,2BAA2B,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC1D,CAAC;IACD,oBAAoB;SACf,CAAC;QACJ,SAAS,CAAC,qBAAqB,GAAG,MAAM,CAAC;IAC3C,CAAC;IAED,OAAO,mBAAmB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAe3C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgE,EAChE,SAAkC,EAAE,EACpC,QAAQ,GAAG,iBAAiB,EAC5B,QAAQ,GAAG,iBAAiB;IAE5B,MAAM,QAAQ,GAAQ,EAAE,CAAC;IACzB,IAAI,MAA0B,CAAC;IAC/B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,MAAM,eAAe,GAAG,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;IAE3D,GAAG,CAAC;QACF,MAAM,UAAU,GAAG;YACjB,GAAG,MAAM;YACT,IAAI,EAAE;gBACJ,KAAK,EAAE,QAAQ;gBACf,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrC;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAE3D,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;YAChC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;YAC3B,MAAM;QACR,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;QACzC,wFAAwF;QACxF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtG,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,MAAM;QACpD,IAAI,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,IAAI,UAAU;YAAE,MAAM;QACrE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM;YAAE,MAAM;QAEjC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC,QAAQ,IAAI,EAAE;IAEf,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,7 @@ _c8ctl_completions() {
45
45
  local which_resources="profile"
46
46
  local output_resources="json text"
47
47
  local completion_resources="bash zsh fish"
48
- local cluster_resources="start stop"
48
+ local cluster_resources="start stop status list list-remote install delete log logs"
49
49
  local help_resources="list get create complete await search deploy run watch cancel resolve fail activate publish correlate upgrade downgrade init profiles profile plugin plugins cluster"
50
50
 
51
51
  # Global flags
@@ -1 +1 @@
1
- {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/commands/deployments.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4MH;;GAEG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgMhB"}
1
+ {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/commands/deployments.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6MH;;GAEG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgMhB"}
@@ -4,6 +4,7 @@
4
4
  import { getLogger } from "../logger.js";
5
5
  import { createClient } from "../client.js";
6
6
  import { resolveTenantId, resolveClusterConfig } from "../config.js";
7
+ import { TenantId } from '@camunda8/orchestration-cluster-api';
7
8
  import { c8ctl } from "../runtime.js";
8
9
  import { readFileSync, readdirSync, statSync, existsSync } from 'node:fs';
9
10
  import { join, dirname, extname, basename, relative } from 'node:path';
@@ -277,7 +278,7 @@ export async function deploy(paths, options) {
277
278
  });
278
279
  // Create deployment request - convert buffers to File objects with proper MIME types
279
280
  const result = await client.createDeployment({
280
- tenantId,
281
+ tenantId: TenantId.assumeExists(tenantId),
281
282
  resources: resources.map(r => {
282
283
  // Determine MIME type based on extension
283
284
  const ext = r.name.split('.').pop()?.toLowerCase();
@@ -1 +1 @@
1
- {"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/commands/deployments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/commands/deployments.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  * Process instance commands
3
3
  */
4
4
  import { type SortOrder } from '../logger.ts';
5
+ import type { ProcessInstanceResult } from '@camunda8/orchestration-cluster-api';
5
6
  /**
6
7
  * List process instances
7
8
  */
@@ -17,7 +18,7 @@ export declare function listProcessInstances(options: {
17
18
  between?: string;
18
19
  dateField?: string;
19
20
  }): Promise<{
20
- items: Array<Record<string, unknown>>;
21
+ items: ProcessInstanceResult[];
21
22
  total?: number;
22
23
  } | undefined>;
23
24
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"process-instances.d.ts","sourceRoot":"","sources":["../../src/commands/process-instances.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAO7D;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAiEjF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsChB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC;IACV,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,GAAG,SAAS,CAAC,CAwGb;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBhB"}
1
+ {"version":3,"file":"process-instances.d.ts","sourceRoot":"","sources":["../../src/commands/process-instances.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAK7D,OAAO,KAAK,EAA0C,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAEzH;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAiE1E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsChB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC;IACV,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,GAAG,SAAS,CAAC,CAwGb;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH;;GAEG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDhB"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH;;GAEG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDhB"}
@@ -4,6 +4,7 @@
4
4
  import { getLogger } from "../logger.js";
5
5
  import { createClient } from "../client.js";
6
6
  import { resolveTenantId } from "../config.js";
7
+ import { TenantId } from '@camunda8/orchestration-cluster-api';
7
8
  import { readFileSync } from 'node:fs';
8
9
  /**
9
10
  * Extract process ID from BPMN file
@@ -31,7 +32,7 @@ export async function run(path, options) {
31
32
  // Deploy the BPMN file - convert to File object with proper MIME type
32
33
  const fileName = path.split('/').pop() || 'process.bpmn';
33
34
  const deployResult = await client.createDeployment({
34
- tenantId,
35
+ tenantId: TenantId.assumeExists(tenantId),
35
36
  resources: [new File([Buffer.from(content)], fileName, { type: 'application/xml' })],
36
37
  });
37
38
  logger.success('Deployment successful', deployResult.deploymentKey.toString());
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;GAEG;AACH,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC5D,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAY,EAAE,OAGvC;IACC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,iBAAiB;QACjB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC;QAEpC,sEAAsE;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,cAAc,CAAC;QACzD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC;YACjD,QAAQ;YACR,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;SACrF,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE/E,0BAA0B;QAC1B,MAAM,CAAC,IAAI,CAAC,iCAAiC,SAAS,KAAK,CAAC,CAAC;QAE7D,MAAM,aAAa,GAAQ;YACzB,mBAAmB,EAAE,SAAS;YAC9B,QAAQ;SACT,CAAC;QAEF,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAc,CAAC,CAAC;gBAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QACvE,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAc,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  # c8ctl-plugin-cluster
2
2
 
3
- A default [c8ctl](https://github.com/camunda/c8ctl) plugin that provides an opinionated way to download, start, and stop a local Camunda 8 cluster using [c8run](https://docs.camunda.io/docs/self-managed/setup/deploy/local/c8run/).
3
+ A default [c8ctl](https://github.com/camunda/c8ctl) plugin that provides an opinionated way to download, start, stop, and inspect a local Camunda 8 cluster using [c8run](https://docs.camunda.io/docs/self-managed/setup/deploy/local/c8run/).
4
4
 
5
5
  ## Usage
6
6
 
@@ -12,7 +12,10 @@ c8ctl cluster start 8.9.0-alpha5
12
12
  c8ctl cluster start stable
13
13
  c8ctl cluster start alpha
14
14
 
15
- # Starting without specifying a version defaults to alpha
15
+ # Start with a major.minor version (rolling release)
16
+ c8ctl cluster start 8.8
17
+
18
+ # Starting without specifying a version defaults to stable
16
19
  c8ctl cluster start
17
20
 
18
21
  # Start with debug output (streams raw c8run logs)
@@ -20,6 +23,24 @@ c8ctl cluster start --debug
20
23
 
21
24
  # Stop the running cluster
22
25
  c8ctl cluster stop
26
+
27
+ # Check whether a cluster is running and see connection details
28
+ c8ctl cluster status
29
+
30
+ # Stream log output from the running cluster
31
+ c8ctl cluster logs
32
+
33
+ # List locally cached versions and available aliases
34
+ c8ctl cluster list
35
+
36
+ # List all versions available on the remote download server
37
+ c8ctl cluster list-remote
38
+
39
+ # Download a version without starting it
40
+ c8ctl cluster install 8.8
41
+
42
+ # Remove a locally cached version to reclaim disk space
43
+ c8ctl cluster delete 8.8
23
44
  ```
24
45
 
25
46
  ## Version aliases
@@ -34,6 +55,15 @@ plugin update.
34
55
  | `stable` | Highest minor release that is GA (e.g. `8.8`) |
35
56
  | `alpha` | Highest minor release overall (e.g. `8.9`) |
36
57
 
58
+ A `<major>.<minor>` version like `8.8` or `8.9` is also treated as a rolling
59
+ release — the download server's `8.8/` directory is updated in-place with new
60
+ patch releases.
61
+
62
+ ### `start` vs `install` update behavior
63
+
64
+ - **`start`** uses the local version if available. A non-blocking remote check runs in the background — if a newer rolling release exists, a hint is printed (e.g. *"A newer server version is available. Install it with: c8ctl cluster install 8.8"*). If the network is unreachable, the hint is silently skipped.
65
+ - **`install`** always checks the remote for a newer rolling release (via ETag comparison) and re-downloads if one is available.
66
+
37
67
  If the download server is unreachable, the aliases fall back to the values
38
68
  shipped in the plugin's `package.json`.
39
69
 
@@ -43,6 +73,12 @@ shipped in the plugin's `package.json`.
43
73
  2. **Cache**: Stores downloaded binaries in a platform-specific cache directory
44
74
  3. **Start**: Launches c8run in the background and waits for the cluster to become healthy
45
75
  4. **Stop**: Gracefully shuts down the running cluster
76
+ 5. **Status**: Reports whether a cluster is running by checking the active marker file and the live health endpoint
77
+ 6. **Logs**: Streams log output (camunda.log, connectors.log) from the running cluster using `tail -f`
78
+ 7. **List**: Shows all locally cached versions and the current resolved values of available version aliases
79
+ 8. **List-remote**: Queries the Camunda Download Center and displays all available versions
80
+ 9. **Install**: Downloads a specific version without starting it, useful for pre-caching
81
+ 10. **Delete**: Removes a locally cached version to reclaim disk space
46
82
 
47
83
  ### Cache locations
48
84
 
@@ -39,6 +39,24 @@ function isVersionAlias(versionSpec) {
39
39
  return KNOWN_ALIAS_NAMES.has(versionSpec);
40
40
  }
41
41
 
42
+ /**
43
+ * Detect a major.minor version pattern (e.g. "8.8", "8.9", "9.0").
44
+ * These are rolling releases on the download server and behave like aliases:
45
+ * their content changes over time, so ETag-based update checks apply.
46
+ */
47
+ export function isMinorVersionPattern(versionSpec) {
48
+ return /^\d+\.\d+$/.test(versionSpec);
49
+ }
50
+
51
+ /**
52
+ * A "rolling version" is any version spec whose remote content can change
53
+ * over time: named aliases (stable, alpha) and major.minor patterns (8.8, 8.9).
54
+ * Pinned versions like 8.9.0-alpha5 are NOT rolling.
55
+ */
56
+ export function isRollingVersion(versionSpec) {
57
+ return isVersionAlias(versionSpec) || isMinorVersionPattern(versionSpec);
58
+ }
59
+
42
60
  /**
43
61
  * Fetch the c8run download directory listing and discover the latest
44
62
  * stable and alpha minor versions.
@@ -114,11 +132,50 @@ async function getDynamicAliases() {
114
132
  return _dynamicAliases;
115
133
  }
116
134
 
117
- async function resolveVersion(versionSpec) {
135
+ async function resolveVersion(versionSpec, { preferLocal = false, cacheDir } = {}) {
118
136
  if (!isVersionAlias(versionSpec)) return versionSpec;
137
+
138
+ // When preferLocal is set (e.g. start), try the persisted alias mapping first
139
+ if (preferLocal && cacheDir) {
140
+ const local = readLocalAliasMapping(cacheDir, versionSpec);
141
+ if (local) return local;
142
+ }
143
+
119
144
  const dynamic = await getDynamicAliases();
120
- if (dynamic?.[versionSpec]) return dynamic[versionSpec];
121
- return _fallbackAliases[versionSpec] ?? versionSpec;
145
+ const resolved = dynamic?.[versionSpec] ?? _fallbackAliases[versionSpec] ?? versionSpec;
146
+
147
+ // Persist the resolved mapping for future offline use
148
+ if (cacheDir && dynamic?.[versionSpec]) {
149
+ storeLocalAliasMapping(cacheDir, versionSpec, resolved);
150
+ }
151
+
152
+ return resolved;
153
+ }
154
+
155
+ function getAliasMappingPath(cacheDir, alias) {
156
+ return join(cacheDir, `alias-${alias}.resolved`);
157
+ }
158
+
159
+ function readLocalAliasMapping(cacheDir, alias) {
160
+ const filePath = getAliasMappingPath(cacheDir, alias);
161
+ if (!existsSync(filePath)) return null;
162
+ try {
163
+ const value = readFileSync(filePath, 'utf-8').trim();
164
+ // Only use the cached mapping if the version is actually installed
165
+ const config = { cacheDir, version: value };
166
+ return isC8RunInstalled(config) ? value : null;
167
+ } catch {
168
+ return null;
169
+ }
170
+ }
171
+
172
+ function storeLocalAliasMapping(cacheDir, alias, resolved) {
173
+ try {
174
+ mkdirSync(cacheDir, { recursive: true });
175
+ writeFileSync(getAliasMappingPath(cacheDir, alias), resolved);
176
+ } catch {
177
+ // Best-effort — don't break the command if we can't persist
178
+ }
122
179
  }
123
180
 
124
181
  async function getVersionAliasEntries() {
@@ -138,15 +195,22 @@ export function _resetDynamicAliasCache() {
138
195
 
139
196
  export const metadata = {
140
197
  name: 'cluster',
141
- description: 'Download, start, and stop a local Camunda 8 cluster',
198
+ description: 'Download, start, stop, and inspect a local Camunda 8 cluster',
142
199
  commands: {
143
200
  'cluster': {
144
201
  description:
145
- 'Manage local Camunda 8 cluster — use "c8ctl cluster start [version]" or "c8ctl cluster stop"',
202
+ 'Manage local Camunda 8 cluster — start, stop, status, logs, install, delete, or list versions',
146
203
  examples: [
147
- { command: 'c8ctl cluster start', description: 'Start a local Camunda 8 cluster (latest alpha)' },
204
+ { command: 'c8ctl cluster start', description: 'Start a local Camunda 8 cluster (latest stable)' },
205
+ { command: 'c8ctl cluster start 8.8', description: 'Start the latest cached 8.8.x release' },
148
206
  { command: 'c8ctl cluster start 8.9.0-alpha5', description: 'Start a specific version' },
149
207
  { command: 'c8ctl cluster stop', description: 'Stop the running cluster' },
208
+ { command: 'c8ctl cluster status', description: 'Show whether a cluster is running and how to connect' },
209
+ { command: 'c8ctl cluster logs', description: 'Stream log output from the running cluster' },
210
+ { command: 'c8ctl cluster list', description: 'List locally cached versions and available aliases' },
211
+ { command: 'c8ctl cluster list-remote', description: 'List all versions available on the remote download server' },
212
+ { command: 'c8ctl cluster install 8.8', description: 'Download a version without starting it' },
213
+ { command: 'c8ctl cluster delete 8.8', description: 'Remove a locally cached version' },
150
214
  ],
151
215
  },
152
216
  },
@@ -176,6 +240,8 @@ function getLogger() {
176
240
  const ACTIVE_MARKER_FILE = 'cluster.active';
177
241
  const VERSION_MARKER_FILE = 'cluster.version';
178
242
  const CLUSTER_STARTUP_TIMEOUT_MS = 120000;
243
+ const HEALTH_CHECK_TIMEOUT_MS = 3_000;
244
+ const ALIAS_COLUMN_WIDTH = 22;
179
245
 
180
246
  function getCacheDir() {
181
247
  const envDir = process.env.C8RUN_CACHE_DIR;
@@ -245,31 +311,59 @@ export function validateVersionSpec(versionSpec) {
245
311
  // Download & installation
246
312
  // ---------------------------------------------------------------------------
247
313
 
314
+ function getInstalledVersionsList(cacheDir) {
315
+ if (!existsSync(cacheDir)) return [];
316
+ return readdirSync(cacheDir, { withFileTypes: true })
317
+ .filter((entry) => entry.isDirectory() && entry.name.startsWith('c8run-'))
318
+ .map((entry) => entry.name.slice('c8run-'.length))
319
+ .sort();
320
+ }
321
+
322
+ function formatLocalVersionsHint(cacheDir) {
323
+ const versions = getInstalledVersionsList(cacheDir);
324
+ if (versions.length === 0) {
325
+ return 'No versions are installed locally.';
326
+ }
327
+ return `Locally available versions:\n${versions.map(v => ` ${v}`).join('\n')}`;
328
+ }
329
+
330
+ function getDownloadUrl(version) {
331
+ const platformInfo = getPlatformIdentifier();
332
+ return `https://downloads.camunda.cloud/release/camunda/c8run/${version}/camunda8-run-${version}-${platformInfo.platform}-${platformInfo.arch}.${platformInfo.extension}`;
333
+ }
334
+
248
335
  async function downloadC8Run(config) {
249
336
  const logger = getLogger();
250
337
  const version = config.version;
251
- const platformInfo = getPlatformIdentifier();
252
338
 
253
- const downloadUrl =
254
- `https://downloads.camunda.cloud/release/camunda/c8run/${version}/camunda8-run-${version}-${platformInfo.platform}-${platformInfo.arch}.${platformInfo.extension}`;
339
+ const downloadUrl = getDownloadUrl(version);
255
340
 
256
- logger.info(`Downloading Camunda ${version} for ${platformInfo.platform}...`);
341
+ logger.info(`Downloading Camunda ${version} for ${getPlatformIdentifier().platform}...`);
257
342
 
258
343
  const cacheDir = config.cacheDir;
259
344
  mkdirSync(cacheDir, { recursive: true });
260
345
 
346
+ const platformInfo = getPlatformIdentifier();
261
347
  const targetFile = join(
262
348
  cacheDir,
263
349
  `c8run-${version}-${platformInfo.platform}-${platformInfo.arch}.${platformInfo.extension}`,
264
350
  );
265
351
 
266
- const response = await fetch(downloadUrl);
352
+ const response = await fetch(downloadUrl).catch((error) => {
353
+ throw new Error(
354
+ `Cannot reach the Camunda Download Center.\n` +
355
+ `URL: ${downloadUrl}\n` +
356
+ `Error: ${error.message}\n\n` +
357
+ formatLocalVersionsHint(cacheDir),
358
+ );
359
+ });
267
360
 
268
361
  if (!response.ok) {
269
362
  throw new Error(
270
363
  `Failed to download c8run ${version}: HTTP ${response.status}\n` +
271
364
  `URL: ${downloadUrl}\n` +
272
- `Please check the version exists or try a different version.`,
365
+ `Please check the version exists or try a different version.\n\n` +
366
+ formatLocalVersionsHint(cacheDir),
273
367
  );
274
368
  }
275
369
 
@@ -283,6 +377,11 @@ async function downloadC8Run(config) {
283
377
  );
284
378
  }
285
379
 
380
+ const etag = response.headers.get('etag') || response.headers.get('last-modified') || null;
381
+ // Note: 'etag' values are quoted strings (e.g. '"abc123"') while 'last-modified'
382
+ // values are date strings. Both are used as opaque version tokens for equality
383
+ // comparison — the format difference does not affect correctness.
384
+
286
385
  const fileStream = createWriteStream(targetFile);
287
386
 
288
387
  let downloadedSize = 0;
@@ -318,7 +417,7 @@ async function downloadC8Run(config) {
318
417
  `Downloaded and saved to ${targetFile} (${Math.floor(downloadedSize / 1024 / 1024)} MB)`,
319
418
  );
320
419
 
321
- return targetFile;
420
+ return { archivePath: targetFile, etag };
322
421
  }
323
422
 
324
423
  async function extractArchive(archivePath, targetDir) {
@@ -417,7 +516,7 @@ export function getC8RunBinaryPath(config) {
417
516
  return binaryPath;
418
517
  }
419
518
 
420
- export function purgeInstalledVersion(config) {
519
+ export function purgeInstalledVersion(config, { reason } = {}) {
421
520
  const logger = getLogger();
422
521
  const installDir = join(config.cacheDir, `c8run-${config.version}`);
423
522
  const platformInfo = getPlatformIdentifier();
@@ -427,31 +526,115 @@ export function purgeInstalledVersion(config) {
427
526
  );
428
527
 
429
528
  if (existsSync(installDir)) {
430
- logger.info(`Removing cached non-pinned installation for ${config.version} since a new version might have been released, ensuring you are on latest...`);
529
+ const msg = reason || 'since a newer version is available';
530
+ logger.info(`Removing cached installation for ${config.version} ${msg}...`);
431
531
  rmSync(installDir, { recursive: true });
432
532
  }
433
533
  if (existsSync(archiveFile)) {
434
534
  rmSync(archiveFile);
435
535
  }
536
+
537
+ // Remove stored ETag so the next install records a fresh one
538
+ const etagFile = getETagFilePath(config);
539
+ if (existsSync(etagFile)) {
540
+ rmSync(etagFile);
541
+ }
436
542
  }
437
543
 
438
- export async function ensureC8RunInstalled(config) {
439
- const logger = getLogger();
544
+ function getETagFilePath(config) {
545
+ return join(config.cacheDir, `c8run-${config.version}.etag`);
546
+ }
440
547
 
441
- // When a version alias (e.g. "stable", "alpha") was used, always
442
- // re-download because the actual artifact behind the alias may have changed.
443
- if (config.isAlias) {
444
- purgeInstalledVersion(config);
548
+ export function readStoredETag(config) {
549
+ const etagFile = getETagFilePath(config);
550
+ if (!existsSync(etagFile)) return null;
551
+ try {
552
+ return readFileSync(etagFile, 'utf-8').trim() || null;
553
+ } catch {
554
+ return null;
445
555
  }
556
+ }
557
+
558
+ export function storeETag(config, etag) {
559
+ mkdirSync(config.cacheDir, { recursive: true });
560
+ writeFileSync(getETagFilePath(config), etag);
561
+ }
562
+
563
+ export async function hasNewerVersionAvailable(config) {
564
+ const storedETag = readStoredETag(config);
565
+
566
+ const downloadUrl = getDownloadUrl(config.version);
567
+ let remoteETag;
568
+ const controller = new AbortController();
569
+ const timeout = setTimeout(() => controller.abort(), 5_000);
570
+ try {
571
+ const response = await fetch(downloadUrl, { method: 'HEAD', signal: controller.signal });
572
+ if (!response.ok) {
573
+ // Can't determine — keep the current installation
574
+ return false;
575
+ }
576
+ remoteETag = response.headers.get('etag') || response.headers.get('last-modified');
577
+ if (!remoteETag) {
578
+ // Server provides no version signal — keep the current installation
579
+ return false;
580
+ }
581
+ } catch {
582
+ // Network error — keep the current installation (allows offline use)
583
+ return false;
584
+ } finally {
585
+ clearTimeout(timeout);
586
+ }
587
+
588
+ if (!storedETag) {
589
+ // No ETag stored yet (e.g. first run after upgrade to this version).
590
+ // Record the current remote ETag so future checks can compare, but
591
+ // do NOT treat this as "update available" — the existing install is fine.
592
+ storeETag(config, remoteETag);
593
+ return false;
594
+ }
595
+
596
+ return remoteETag !== storedETag;
597
+ }
598
+
599
+ export async function ensureC8RunInstalled(config) {
600
+ const logger = getLogger();
446
601
 
447
602
  if (isC8RunInstalled(config)) {
448
- logger.info(`c8run ${config.version} is already installed.`);
449
- return;
603
+ if (config.checkForUpdates) {
604
+ // Explicitly asked to check for updates (e.g. install subcommand with a rolling version)
605
+ const hasUpdate = await hasNewerVersionAvailable(config);
606
+ if (!hasUpdate) {
607
+ logger.info(`c8run ${config.version} is already installed and up to date.`);
608
+ return;
609
+ }
610
+ purgeInstalledVersion(config);
611
+ } else {
612
+ // Use local installation as-is (start subcommand, or pinned version)
613
+ logger.info(`c8run ${config.version} is already installed.`);
614
+
615
+ // For rolling versions on start, do a bounded non-blocking check and hint.
616
+ // We store the promise so tests can await it, but we don't block the caller.
617
+ if (config.checkForUpdateHint) {
618
+ config._hintPromise = hasNewerVersionAvailable(config)
619
+ .then((hasUpdate) => {
620
+ if (hasUpdate) {
621
+ logger.info(
622
+ `A newer server version is available. Install it with: c8ctl cluster install ${config.version}`,
623
+ );
624
+ }
625
+ })
626
+ .catch(() => {
627
+ // Swallow — offline or timeout, don't bother the user
628
+ });
629
+ }
630
+
631
+ return;
632
+ }
450
633
  }
451
634
 
452
635
  logger.info('No local installation found. Setting up...');
453
636
 
454
- const archivePath = await downloadC8Run(config);
637
+ const { archivePath, etag } = await downloadC8Run(config);
455
638
 
456
639
  const installDir = join(config.cacheDir, `c8run-${config.version}`);
457
640
  await extractArchive(archivePath, installDir);
@@ -464,6 +647,11 @@ export async function ensureC8RunInstalled(config) {
464
647
  const binaryPath = getC8RunBinaryPath(config);
465
648
  await chmod(binaryPath, 0o755);
466
649
 
650
+ // Store the ETag for rolling versions so future checks can detect new releases
651
+ if (config.isRolling && etag) {
652
+ storeETag(config, etag);
653
+ }
654
+
467
655
  logger.info(`c8run ${config.version} installed successfully.`);
468
656
  }
469
657
 
@@ -730,6 +918,310 @@ async function stopC8Run(config) {
730
918
  logger.info('Cluster stopped.');
731
919
  }
732
920
 
921
+ // ---------------------------------------------------------------------------
922
+ // Status
923
+ // ---------------------------------------------------------------------------
924
+
925
+ const CLUSTER_URLS = {
926
+ operate: 'http://localhost:8080/operate',
927
+ tasklist: 'http://localhost:8080/tasklist',
928
+ zeebeGrpc: 'localhost:26500',
929
+ zeebeRest: 'http://localhost:8080/v2/',
930
+ health: 'http://localhost:9600/actuator/health',
931
+ };
932
+
933
+ export async function clusterStatus(cacheDir) {
934
+ const logger = getLogger();
935
+ const markerFile = join(cacheDir, ACTIVE_MARKER_FILE);
936
+ const versionFile = join(cacheDir, VERSION_MARKER_FILE);
937
+
938
+ const markerExists = existsSync(markerFile);
939
+ const version = markerExists && existsSync(versionFile)
940
+ ? readFileSync(versionFile, 'utf-8').trim() || null
941
+ : null;
942
+
943
+ // Check live health endpoint regardless of marker
944
+ let isHealthy = false;
945
+ try {
946
+ const controller = new AbortController();
947
+ const timeout = setTimeout(() => controller.abort(), HEALTH_CHECK_TIMEOUT_MS);
948
+ try {
949
+ const response = await fetch(CLUSTER_URLS.health, { signal: controller.signal });
950
+ if (response.ok) {
951
+ const data = await response.json();
952
+ isHealthy = data.status === 'UP';
953
+ }
954
+ } finally {
955
+ clearTimeout(timeout);
956
+ }
957
+ } catch {
958
+ // Health endpoint not reachable
959
+ }
960
+
961
+ let status;
962
+ if (isHealthy) {
963
+ status = 'running';
964
+ } else if (markerExists) {
965
+ status = 'starting or unresponsive';
966
+ } else {
967
+ status = 'stopped';
968
+ }
969
+
970
+ if (globalThis.c8ctl?.getLogger().mode === 'json') {
971
+ logger.json({ status, version, urls: isHealthy ? CLUSTER_URLS : undefined });
972
+ return;
973
+ }
974
+
975
+ if (!markerExists && !isHealthy) {
976
+ console.log('Cluster status: stopped');
977
+ console.log('');
978
+ console.log(' Start with: c8ctl cluster start');
979
+ return;
980
+ }
981
+
982
+ console.log(`Cluster status: ${status}`);
983
+ if (version) {
984
+ console.log(` Version: ${version}`);
985
+ }
986
+
987
+ if (isHealthy) {
988
+ console.log('');
989
+ console.log(' - Operate: ' + CLUSTER_URLS.operate);
990
+ console.log(' - Tasklist: ' + CLUSTER_URLS.tasklist);
991
+ console.log(' - Zeebe GRPC: ' + CLUSTER_URLS.zeebeGrpc);
992
+ console.log(' - Zeebe REST: ' + CLUSTER_URLS.zeebeRest);
993
+ console.log(' - Health: ' + CLUSTER_URLS.health);
994
+ console.log('');
995
+ console.log(' Default credentials: demo / demo');
996
+ } else {
997
+ console.log('');
998
+ console.log(' The cluster appears to have been started but is not yet responding.');
999
+ console.log(' Run "c8ctl cluster status" again in a moment, or check the logs.');
1000
+ }
1001
+ console.log('');
1002
+ }
1003
+
1004
+ // ---------------------------------------------------------------------------
1005
+ // List cached versions
1006
+ // ---------------------------------------------------------------------------
1007
+
1008
+ export async function listInstalledVersions(cacheDir) {
1009
+ const logger = getLogger();
1010
+
1011
+ const installedVersions = getInstalledVersionsList(cacheDir)
1012
+ .sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
1013
+
1014
+ const aliasEntries = await getVersionAliasEntries();
1015
+
1016
+ if (globalThis.c8ctl?.getLogger().mode === 'json') {
1017
+ logger.json({
1018
+ installed: installedVersions,
1019
+ aliases: Object.fromEntries(aliasEntries),
1020
+ });
1021
+ return;
1022
+ }
1023
+
1024
+ if (installedVersions.length === 0) {
1025
+ console.log('No versions installed locally.');
1026
+ console.log('');
1027
+ console.log(' Install one with: c8ctl cluster start [version]');
1028
+ } else {
1029
+ console.log('Installed versions:');
1030
+ for (const v of installedVersions) {
1031
+ console.log(` ${v}`);
1032
+ }
1033
+ }
1034
+
1035
+ console.log('');
1036
+ console.log('Version aliases (dynamically resolved):');
1037
+ for (const [alias, resolved] of aliasEntries) {
1038
+ console.log(` ${alias.padEnd(ALIAS_COLUMN_WIDTH)} → ${resolved}`);
1039
+ }
1040
+ console.log('');
1041
+ }
1042
+
1043
+ // ---------------------------------------------------------------------------
1044
+ // List remote versions
1045
+ // ---------------------------------------------------------------------------
1046
+
1047
+ export async function listRemoteVersions() {
1048
+ const logger = getLogger();
1049
+
1050
+ let html;
1051
+ try {
1052
+ const response = await fetch(DOWNLOAD_BASE_URL);
1053
+ if (!response.ok) {
1054
+ throw new Error(`HTTP ${response.status}`);
1055
+ }
1056
+ html = await response.text();
1057
+ } catch (error) {
1058
+ logger.error(`Failed to query the Camunda Download Center: ${error}`);
1059
+ logger.info('Check your network connection and try again.');
1060
+ process.exit(1);
1061
+ }
1062
+
1063
+ // Extract all versioned directories (minor versions like "8.8/" and alpha like "8.9.0-alpha5/")
1064
+ const versionMatches = [...html.matchAll(/href="([\d]+\.[\d]+(?:\.\d+)?(?:-[A-Za-z0-9._-]+)?)\/"/g)]
1065
+ .map(m => m[1]);
1066
+
1067
+ if (versionMatches.length === 0) {
1068
+ logger.warn('No versions found on the remote server.');
1069
+ return;
1070
+ }
1071
+
1072
+ const sorted = [...new Set(versionMatches)].sort((a, b) => {
1073
+ // Sort by major.minor, then full string with numeric comparison for patches/alphas
1074
+ const [aMaj, aMin] = a.split('.').map(Number);
1075
+ const [bMaj, bMin] = b.split('.').map(Number);
1076
+ return aMaj - bMaj || aMin - bMin || a.localeCompare(b, undefined, { numeric: true });
1077
+ });
1078
+
1079
+ const aliasEntries = await getVersionAliasEntries();
1080
+
1081
+ if (globalThis.c8ctl?.getLogger().mode === 'json') {
1082
+ logger.json({
1083
+ versions: sorted,
1084
+ aliases: Object.fromEntries(aliasEntries),
1085
+ });
1086
+ return;
1087
+ }
1088
+
1089
+ console.log('Available versions on remote:');
1090
+ for (const v of sorted) {
1091
+ console.log(` ${v}`);
1092
+ }
1093
+
1094
+ console.log('');
1095
+ console.log('Version aliases (dynamically resolved):');
1096
+ for (const [alias, resolved] of aliasEntries) {
1097
+ console.log(` ${alias.padEnd(ALIAS_COLUMN_WIDTH)} → ${resolved}`);
1098
+ }
1099
+ console.log('');
1100
+ }
1101
+
1102
+ // ---------------------------------------------------------------------------
1103
+ // Delete cached version
1104
+ // ---------------------------------------------------------------------------
1105
+
1106
+ export async function deleteVersion(cacheDir, versionSpec) {
1107
+ const logger = getLogger();
1108
+
1109
+ if (!versionSpec) {
1110
+ logger.error('Please specify a version to delete. Example: c8ctl cluster delete 8.8');
1111
+ process.exit(1);
1112
+ }
1113
+
1114
+ validateVersionSpec(versionSpec);
1115
+
1116
+ // Resolve named aliases (stable/alpha) to the actual cached version name.
1117
+ // Major.minor patterns like 8.8 are used as-is since the cache dir is named c8run-8.8.
1118
+ const resolvedVersion = isVersionAlias(versionSpec)
1119
+ ? await resolveVersion(versionSpec)
1120
+ : versionSpec;
1121
+
1122
+ // Prevent deleting a currently running version
1123
+ const versionFile = join(cacheDir, VERSION_MARKER_FILE);
1124
+ const markerFile = join(cacheDir, ACTIVE_MARKER_FILE);
1125
+
1126
+ if (existsSync(markerFile) && existsSync(versionFile)) {
1127
+ const runningVersion = readFileSync(versionFile, 'utf-8').trim();
1128
+ if (runningVersion === resolvedVersion) {
1129
+ logger.error(
1130
+ `Version ${resolvedVersion} is currently running. Stop it first with: c8ctl cluster stop`
1131
+ );
1132
+ process.exit(1);
1133
+ }
1134
+ }
1135
+
1136
+ const config = { cacheDir, version: resolvedVersion };
1137
+
1138
+ if (!isC8RunInstalled(config)) {
1139
+ logger.warn(`Version ${versionSpec} is not installed locally.`);
1140
+ return;
1141
+ }
1142
+
1143
+ purgeInstalledVersion(config, { reason: 'as requested' });
1144
+ logger.info(`Version ${versionSpec} has been deleted.`);
1145
+ }
1146
+
1147
+ // ---------------------------------------------------------------------------
1148
+ // Logs
1149
+ // ---------------------------------------------------------------------------
1150
+
1151
+ const LOG_FILES = ['camunda.log', 'connectors.log'];
1152
+
1153
+ export async function streamLogs(cacheDir) {
1154
+ const logger = getLogger();
1155
+ const markerFile = join(cacheDir, ACTIVE_MARKER_FILE);
1156
+ const versionFile = join(cacheDir, VERSION_MARKER_FILE);
1157
+
1158
+ if (!existsSync(markerFile)) {
1159
+ logger.warn('No cluster is currently running.');
1160
+ logger.info('Start one with: c8ctl cluster start');
1161
+ return;
1162
+ }
1163
+
1164
+ const version = existsSync(versionFile)
1165
+ ? readFileSync(versionFile, 'utf-8').trim()
1166
+ : null;
1167
+
1168
+ if (!version) {
1169
+ logger.error('Cannot determine running cluster version. Try restarting the cluster.');
1170
+ process.exit(1);
1171
+ }
1172
+
1173
+ const config = { cacheDir, version };
1174
+ let binaryPath;
1175
+ try {
1176
+ binaryPath = getC8RunBinaryPath(config);
1177
+ } catch {
1178
+ logger.error(`Cannot find c8run binary for version ${version}.`);
1179
+ process.exit(1);
1180
+ }
1181
+
1182
+ const binaryDir = dirname(binaryPath);
1183
+ const logDir = join(binaryDir, 'log');
1184
+
1185
+ const existingLogs = LOG_FILES
1186
+ .map(f => join(logDir, f))
1187
+ .filter(f => existsSync(f));
1188
+
1189
+ if (existingLogs.length === 0) {
1190
+ logger.warn(`No log files found in ${logDir}`);
1191
+ logger.info('The cluster may still be starting. Try again in a moment.');
1192
+ return;
1193
+ }
1194
+
1195
+ logger.info(`Streaming logs from ${logDir} (Ctrl+C to stop)...`);
1196
+ logger.info('');
1197
+
1198
+ // Use tail -f to follow all log files
1199
+ const tailArgs = ['-f', ...existingLogs];
1200
+ const tail = spawn('tail', tailArgs, { stdio: 'inherit' });
1201
+
1202
+ // Forward SIGINT to tail process for clean exit
1203
+ const sigintHandler = () => {
1204
+ tail.kill('SIGINT');
1205
+ };
1206
+ process.on('SIGINT', sigintHandler);
1207
+
1208
+ await new Promise((resolve, reject) => {
1209
+ const cleanup = () => {
1210
+ process.removeListener('SIGINT', sigintHandler);
1211
+ };
1212
+
1213
+ tail.once('close', () => {
1214
+ cleanup();
1215
+ resolve();
1216
+ });
1217
+
1218
+ tail.once('error', (error) => {
1219
+ cleanup();
1220
+ reject(error);
1221
+ });
1222
+ });
1223
+ }
1224
+
733
1225
  // ---------------------------------------------------------------------------
734
1226
  // Argument parsing helper
735
1227
  // ---------------------------------------------------------------------------
@@ -782,39 +1274,127 @@ export function parsePluginArgs(args) {
782
1274
  // Plugin commands export
783
1275
  // ---------------------------------------------------------------------------
784
1276
 
1277
+ const VALID_SUBCOMMANDS = ['start', 'stop', 'status', 'list', 'list-remote', 'install', 'delete', 'log', 'logs'];
1278
+
785
1279
  export const commands = {
786
1280
  'cluster': async (args) => {
787
1281
  const logger = getLogger();
788
1282
  const parsed = parsePluginArgs(args);
789
1283
 
790
- if (!parsed.subcommand || !['start', 'stop'].includes(parsed.subcommand)) {
1284
+ if (!parsed.subcommand || !VALID_SUBCOMMANDS.includes(parsed.subcommand)) {
791
1285
  console.log('Usage:');
792
1286
  console.log(' c8ctl cluster start [<version>] [--debug]');
793
- console.log(' c8ctl cluster stop [<version>]');
1287
+ console.log(' c8ctl cluster stop');
1288
+ console.log(' c8ctl cluster status');
1289
+ console.log(' c8ctl cluster logs (alias: log)');
1290
+ console.log(' c8ctl cluster list');
1291
+ console.log(' c8ctl cluster list-remote');
1292
+ console.log(' c8ctl cluster install <version>');
1293
+ console.log(' c8ctl cluster delete <version>');
794
1294
  console.log('');
795
1295
  console.log('Subcommands:');
796
- console.log(' start Download (if needed) and start a local Camunda 8 cluster');
797
- console.log(' stop Stop the running local Camunda 8 cluster');
1296
+ console.log(' start Download (if needed) and start a local Camunda 8 cluster');
1297
+ console.log(' stop Stop the running local Camunda 8 cluster');
1298
+ console.log(' status Show whether a cluster is running and connection details');
1299
+ console.log(' logs Stream log output from the running cluster');
1300
+ console.log(' list List locally cached versions and available version aliases');
1301
+ console.log(' list-remote List all versions available on the remote download server');
1302
+ console.log(' install Download a version without starting it');
1303
+ console.log(' delete Remove a locally cached version to reclaim disk space');
798
1304
  console.log('');
799
1305
  console.log('Options:');
800
- console.log(' <version> Camunda version or alias (default: alpha)');
1306
+ console.log(' <version> Camunda version, alias, or major.minor (default: stable)');
801
1307
  console.log(' --c8-version <version> Alternative flag form for version');
802
1308
  console.log(' --debug Stream raw c8run output during start');
803
1309
  console.log('');
804
- console.log('Version aliases (dynamically resolved):');
1310
+ console.log('A <version> can be:');
1311
+ console.log(' stable / alpha Named aliases (dynamically resolved to latest)');
1312
+ console.log(' 8.8, 8.9 Major.minor — rolling release for that minor');
1313
+ console.log(' 8.9.0-alpha5 Exact pinned version');
1314
+ console.log('');
1315
+ console.log(' start uses a local version if available (no remote check).');
1316
+ console.log(' install always checks the remote for a newer rolling release.');
1317
+ console.log('');
1318
+ console.log('Version aliases (dynamically resolved):')
805
1319
  for (const [alias, resolved] of await getVersionAliasEntries()) {
806
- console.log(` ${alias.padEnd(22)} → ${resolved}`);
1320
+ console.log(` ${alias.padEnd(ALIAS_COLUMN_WIDTH)} → ${resolved}`);
807
1321
  }
808
1322
  console.log('');
809
1323
  console.log('Examples:');
810
- console.log(' c8ctl cluster start # Start using default alias (alpha)');
1324
+ console.log(' c8ctl cluster start # Start using default alias (stable)');
811
1325
  console.log(' c8ctl cluster start stable # Start latest stable release');
1326
+ console.log(' c8ctl cluster start 8.8 # Start latest cached 8.8.x release');
812
1327
  console.log(' c8ctl cluster start 8.9.0-alpha5 # Start specific version');
813
1328
  console.log(' c8ctl cluster stop');
1329
+ console.log(' c8ctl cluster status');
1330
+ console.log(' c8ctl cluster logs (alias: log)');
1331
+ console.log(' c8ctl cluster list');
1332
+ console.log(' c8ctl cluster list-remote');
1333
+ console.log(' c8ctl cluster install 8.8');
1334
+ console.log(' c8ctl cluster delete 8.8');
1335
+ return;
1336
+ }
1337
+
1338
+ if (parsed.subcommand === 'status') {
1339
+ try {
1340
+ await clusterStatus(getCacheDir());
1341
+ } catch (error) {
1342
+ logger.error(`Failed to get cluster status: ${error}`);
1343
+ process.exit(1);
1344
+ }
1345
+ return;
1346
+ }
1347
+
1348
+ if (parsed.subcommand === 'list') {
1349
+ try {
1350
+ await listInstalledVersions(getCacheDir());
1351
+ } catch (error) {
1352
+ logger.error(`Failed to list versions: ${error}`);
1353
+ process.exit(1);
1354
+ }
1355
+ return;
1356
+ }
1357
+
1358
+ if (parsed.subcommand === 'list-remote') {
1359
+ try {
1360
+ await listRemoteVersions();
1361
+ } catch (error) {
1362
+ logger.error(`Failed to list remote versions: ${error}`);
1363
+ process.exit(1);
1364
+ }
1365
+ return;
1366
+ }
1367
+
1368
+ if (parsed.subcommand === 'log' || parsed.subcommand === 'logs') {
1369
+ try {
1370
+ await streamLogs(getCacheDir());
1371
+ } catch (error) {
1372
+ logger.error(`Failed to stream logs: ${error}`);
1373
+ process.exit(1);
1374
+ }
814
1375
  return;
815
1376
  }
816
1377
 
817
- const versionSpec = parsed.version || 'alpha';
1378
+ // install and delete require an explicit version argument
1379
+ if (!parsed.version && (parsed.subcommand === 'install' || parsed.subcommand === 'delete')) {
1380
+ const example = parsed.subcommand === 'delete'
1381
+ ? 'c8ctl cluster delete 8.8'
1382
+ : 'c8ctl cluster install stable';
1383
+ logger.error(`Please specify a version. Example: ${example}`);
1384
+ process.exit(1);
1385
+ }
1386
+
1387
+ if (parsed.subcommand === 'delete') {
1388
+ try {
1389
+ await deleteVersion(getCacheDir(), parsed.version);
1390
+ } catch (error) {
1391
+ logger.error(`Failed to delete version: ${error}`);
1392
+ process.exit(1);
1393
+ }
1394
+ return;
1395
+ }
1396
+
1397
+ const versionSpec = parsed.version || 'stable';
818
1398
  if (!parsed.version && parsed.subcommand === 'start') {
819
1399
  logger.info(`No version specified, using default: "${versionSpec}"`);
820
1400
  }
@@ -824,11 +1404,25 @@ export const commands = {
824
1404
  logger.error(error.message);
825
1405
  process.exit(1);
826
1406
  }
827
- const version = await resolveVersion(versionSpec);
1407
+ const theCacheDir = getCacheDir();
1408
+ const version = await resolveVersion(versionSpec, {
1409
+ // start: prefer locally-cached alias mapping to avoid a network fetch when already installed
1410
+ preferLocal: parsed.subcommand === 'start',
1411
+ cacheDir: theCacheDir,
1412
+ });
828
1413
  if (isVersionAlias(versionSpec)) {
829
1414
  logger.info(`Resolved alias "${versionSpec}" → ${version}`);
830
1415
  }
831
- const config = { cacheDir: getCacheDir(), version, isAlias: isVersionAlias(versionSpec) };
1416
+ const rolling = isRollingVersion(versionSpec);
1417
+ const config = {
1418
+ cacheDir: theCacheDir,
1419
+ version,
1420
+ isRolling: rolling,
1421
+ // install: check remote for updates when version is rolling (blocks until done)
1422
+ checkForUpdates: parsed.subcommand === 'install' && rolling,
1423
+ // start: soft hint about available updates for rolling versions (non-blocking)
1424
+ checkForUpdateHint: parsed.subcommand === 'start' && rolling,
1425
+ };
832
1426
 
833
1427
  if (parsed.subcommand === 'start') {
834
1428
  try {
@@ -845,6 +1439,14 @@ export const commands = {
845
1439
  logger.error(`Failed to stop cluster: ${error}`);
846
1440
  process.exit(1);
847
1441
  }
1442
+ } else if (parsed.subcommand === 'install') {
1443
+ try {
1444
+ await ensureC8RunInstalled(config);
1445
+ logger.info(`Version ${version} is ready. Start it with: c8ctl cluster start ${parsed.version || ''}`);
1446
+ } catch (error) {
1447
+ logger.error(`Failed to install version: ${error}`);
1448
+ process.exit(1);
1449
+ }
848
1450
  }
849
1451
  },
850
1452
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda8/cli",
3
- "version": "2.6.0-alpha.5",
3
+ "version": "2.6.0-alpha.9",
4
4
  "description": "Camunda 8 CLI - minimal-dependency CLI for Camunda 8 operations",
5
5
  "type": "module",
6
6
  "engines": {
@@ -30,9 +30,9 @@
30
30
  "copy-plugins": "node -e \"const fs=require('fs');const path=require('path');const src='default-plugins';const dest='dist/default-plugins';if(fs.existsSync(src)){fs.cpSync(src,dest,{recursive:true})}\"",
31
31
  "copy-templates": "node -e \"const fs=require('fs');const src='src/templates';const dest='dist/templates';if(fs.existsSync(src)){fs.cpSync(src,dest,{recursive:true})}\"",
32
32
  "prepublishOnly": "npm run build",
33
- "test": "node --experimental-strip-types --test tests/unit/setup.test.ts tests/unit/*.test.ts tests/integration/*.test.ts",
34
- "test:unit": "node --experimental-strip-types --test tests/unit/setup.test.ts tests/unit/*.test.ts",
35
- "test:integration": "node --experimental-strip-types --test tests/integration/*.test.ts",
33
+ "test": "node --experimental-strip-types --test --experimental-test-isolation=none tests/unit/*.test.ts tests/integration/*.test.ts",
34
+ "test:unit": "node --experimental-strip-types --test --experimental-test-isolation=none tests/unit/*.test.ts",
35
+ "test:integration": "node --experimental-strip-types --test --experimental-test-isolation=none tests/integration/*.test.ts",
36
36
  "dev": "node src/index.ts",
37
37
  "cli": "node src/index.ts"
38
38
  },
@@ -58,8 +58,8 @@
58
58
  "access": "public"
59
59
  },
60
60
  "dependencies": {
61
- "@camunda8/orchestration-cluster-api": "^8.8.4",
62
- "@modelcontextprotocol/sdk": "^1.27.1"
61
+ "@camunda8/orchestration-cluster-api": "8.9.0-alpha.33",
62
+ "@modelcontextprotocol/sdk": "^1.29.0"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@semantic-release/exec": "^7.1.0",