@camunda8/cli 3.2.0-alpha.2 → 3.2.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/CONTEXT.md +7 -15
  2. package/EXAMPLES.md +233 -1
  3. package/README.md +44 -177
  4. package/dist/command-dispatch.js +1 -1
  5. package/dist/command-dispatch.js.map +1 -1
  6. package/dist/command-registry.d.ts +19 -7
  7. package/dist/command-registry.d.ts.map +1 -1
  8. package/dist/command-registry.js +47 -7
  9. package/dist/command-registry.js.map +1 -1
  10. package/dist/commands/deploy.d.ts +13 -0
  11. package/dist/commands/deploy.d.ts.map +1 -0
  12. package/dist/commands/deploy.js +91 -0
  13. package/dist/commands/deploy.js.map +1 -0
  14. package/dist/{deployments.d.ts → commands/helpers/deploy-helpers.d.ts} +49 -12
  15. package/dist/commands/helpers/deploy-helpers.d.ts.map +1 -0
  16. package/dist/{deployments.js → commands/helpers/deploy-helpers.js} +16 -97
  17. package/dist/commands/helpers/deploy-helpers.js.map +1 -0
  18. package/dist/commands/identity-authorizations.d.ts +0 -13
  19. package/dist/commands/identity-authorizations.d.ts.map +1 -1
  20. package/dist/commands/identity-authorizations.js +1 -1
  21. package/dist/commands/identity-authorizations.js.map +1 -1
  22. package/dist/commands/identity.d.ts +1 -21
  23. package/dist/commands/identity.d.ts.map +1 -1
  24. package/dist/commands/identity.js +7 -8
  25. package/dist/commands/identity.js.map +1 -1
  26. package/dist/commands/profiles.d.ts +0 -32
  27. package/dist/commands/profiles.d.ts.map +1 -1
  28. package/dist/commands/profiles.js +5 -36
  29. package/dist/commands/profiles.js.map +1 -1
  30. package/dist/commands/watch.d.ts.map +1 -1
  31. package/dist/commands/watch.js +2 -2
  32. package/dist/commands/watch.js.map +1 -1
  33. package/dist/default-plugins/bpmn/c8ctl-plugin.js +7374 -137
  34. package/dist/default-plugins/bpmn/package.json +8 -1
  35. package/dist/default-plugins/element-template/c8ctl-plugin.js +10194 -248
  36. package/dist/default-plugins/element-template/package.json +11 -1
  37. package/dist/default-plugins/feel/c8ctl-plugin.js +14030 -584
  38. package/dist/default-plugins/feel/package.json +4 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +16 -9
  41. package/dist/index.js.map +1 -1
  42. package/dist/resource-extensions.d.ts.map +1 -0
  43. package/dist/resource-extensions.js.map +1 -0
  44. package/dist/vendor/bpmnlint.cjs +25907 -0
  45. package/package.json +11 -13
  46. package/dist/commands/resource-extensions.d.ts.map +0 -1
  47. package/dist/commands/resource-extensions.js.map +0 -1
  48. package/dist/default-plugins/bpmn/c8ctl-plugin.js.map +0 -1
  49. package/dist/default-plugins/bpmn/format.js +0 -64
  50. package/dist/default-plugins/bpmn/format.js.map +0 -1
  51. package/dist/default-plugins/bpmn/lint.js +0 -323
  52. package/dist/default-plugins/bpmn/lint.js.map +0 -1
  53. package/dist/default-plugins/element-template/c8ctl-plugin.js.map +0 -1
  54. package/dist/default-plugins/element-template/commands/apply.js +0 -337
  55. package/dist/default-plugins/element-template/commands/apply.js.map +0 -1
  56. package/dist/default-plugins/element-template/commands/get-properties.js +0 -350
  57. package/dist/default-plugins/element-template/commands/get-properties.js.map +0 -1
  58. package/dist/default-plugins/element-template/commands/get.js +0 -107
  59. package/dist/default-plugins/element-template/commands/get.js.map +0 -1
  60. package/dist/default-plugins/element-template/commands/info.js +0 -196
  61. package/dist/default-plugins/element-template/commands/info.js.map +0 -1
  62. package/dist/default-plugins/element-template/commands/search.js +0 -106
  63. package/dist/default-plugins/element-template/commands/search.js.map +0 -1
  64. package/dist/default-plugins/element-template/commands/sync.js +0 -36
  65. package/dist/default-plugins/element-template/commands/sync.js.map +0 -1
  66. package/dist/default-plugins/element-template/helpers.js +0 -515
  67. package/dist/default-plugins/element-template/helpers.js.map +0 -1
  68. package/dist/default-plugins/element-template/marketplace.js +0 -597
  69. package/dist/default-plugins/element-template/marketplace.js.map +0 -1
  70. package/dist/default-plugins/element-template/template-ref.js +0 -243
  71. package/dist/default-plugins/element-template/template-ref.js.map +0 -1
  72. package/dist/default-plugins/feel/c8ctl-plugin.js.map +0 -1
  73. package/dist/default-plugins/hello-world/README.md +0 -161
  74. package/dist/default-plugins/hello-world/c8ctl-plugin.js +0 -69
  75. package/dist/default-plugins/hello-world/package.json +0 -8
  76. package/dist/deployments.d.ts.map +0 -1
  77. package/dist/deployments.js.map +0 -1
  78. /package/dist/{commands/resource-extensions.d.ts → resource-extensions.d.ts} +0 -0
  79. /package/dist/{commands/resource-extensions.js → resource-extensions.js} +0 -0
package/CONTEXT.md CHANGED
@@ -38,6 +38,9 @@ c8ctl help # get structured JSON command reference
38
38
  | `inc` | incident(s) |
39
39
  | `msg` | message |
40
40
  | `vars`| variable(s) |
41
+ | `var` | variable |
42
+ | `auth`| authorization(s) |
43
+ | `mr` | mapping-rule(s) |
41
44
 
42
45
  ## Agent Flags
43
46
 
@@ -59,21 +62,10 @@ Use this to reduce context window size when parsing output programmatically.
59
62
 
60
63
  ### `--dry-run`
61
64
 
62
- Applies to all **mutating** commands: `create`, `cancel`, `deploy`,
63
- `complete`, `fail`, `activate`, `resolve`, `publish`, `correlate`.
64
-
65
- In dry-run mode:
66
- - All inputs are validated
67
- - The target profile/client is resolved
68
- - The equivalent API request is emitted as JSON to stdout:
69
- `{ "dryRun": true, "command": "...", "method": "POST", "url": "...", "body": {...} }`
70
- - The actual API call is **not** executed
71
- - Exits 0
72
-
73
- **Recommended workflow for mutating operations:**
74
- 1. Run the command with `--dry-run` and inspect the JSON output
75
- 2. Confirm the request with the user (or validate programmatically)
76
- 3. Re-run without `--dry-run` to execute
65
+ Preview the API request without executing it. Supported by most commands.
66
+ Emits a JSON object to stdout and exits 0:
67
+
68
+ `{ "dryRun": true, "command": "...", "method": "...", "url": "...", "body": ... }`
77
69
 
78
70
  ```sh
79
71
  c8ctl create pi --id=my-process --dry-run
package/EXAMPLES.md CHANGED
@@ -13,10 +13,16 @@ Comprehensive examples for all c8ctl operations.
13
13
  - [Deployments](#deployments)
14
14
  - [Forms](#forms)
15
15
  - [Topology](#topology)
16
+ - [Variables](#variables)
17
+ - [Date Range Filtering](#date-range-filtering)
18
+ - [Identity Management](#identity-management)
19
+ - [Open Camunda Applications](#open-camunda-applications)
16
20
  - [Profile Management](#profile-management)
17
21
  - [Session Management](#session-management)
18
22
  - [Plugin Management](#plugin-management)
19
23
  - [Local Cluster](#local-cluster)
24
+ - [Which](#which)
25
+ - [Doctor](#doctor)
20
26
  - [Agent / Programmatic Consumption](#agent--programmatic-consumption)
21
27
 
22
28
  ---
@@ -486,8 +492,11 @@ c8 publish msg order-placed --correlationKey=order-12345 --timeToLive=3600000
486
492
 
487
493
  ### Correlate Message
488
494
 
495
+ Correlate delivers a message to a specific waiting process instance. Unlike
496
+ `publish` (where `--correlationKey` is optional), `correlate` requires it.
497
+
489
498
  ```bash
490
- # Correlate is an alias for publish
499
+ # Correlate a message to a specific process instance
491
500
  c8 correlate msg payment-received --correlationKey=order-12345 --variables='{"amount":250.00}'
492
501
  ```
493
502
 
@@ -727,6 +736,229 @@ c8 get topology
727
736
 
728
737
  ---
729
738
 
739
+ ## Variables
740
+
741
+ ### Set Variables
742
+
743
+ Set variables on a process instance or flow element scope. Variables propagate to the outermost scope by default.
744
+
745
+ ```bash
746
+ # Set variables on a process instance
747
+ c8 set variable 2251799813685249 --variables='{"status":"approved"}'
748
+
749
+ # Set variables in local scope only (no propagation)
750
+ c8 set variable 2251799813685249 --variables='{"x":1}' --local
751
+ ```
752
+
753
+ ---
754
+
755
+ ## Date Range Filtering
756
+
757
+ Use `--between=<from>..<to>` to filter by date range (process instances, user tasks, incidents, jobs). Either side can be omitted for open-ended ranges.
758
+
759
+ ```bash
760
+ # Process instances between specific dates
761
+ c8 search pi --between=2024-01-01..2024-12-31
762
+
763
+ # Open-ended: everything from a date onward
764
+ c8 search pi --between=2024-01-01..
765
+
766
+ # Open-ended: everything up to a date
767
+ c8 search pi --between=..2024-12-31
768
+
769
+ # Use --dateField to filter on a different field (not supported by incidents)
770
+ c8 search pi --between=2024-01-01..2024-12-31 --dateField=endDate
771
+ ```
772
+
773
+ ---
774
+
775
+ ## Identity Management
776
+
777
+ c8ctl supports managing identity resources: users, roles, groups, tenants, authorizations, and mapping rules.
778
+
779
+ ### Users
780
+
781
+ ```bash
782
+ # List users
783
+ c8 list users
784
+
785
+ # Search users
786
+ c8 search users --username=john
787
+ c8 search users --name=John --email=john@example.com
788
+
789
+ # Get user by username
790
+ c8 get user john
791
+
792
+ # Create a user
793
+ c8 create user --username=john --name='John Doe' --email=john@example.com --password=secret
794
+
795
+ # Delete a user
796
+ c8 delete user john
797
+ ```
798
+
799
+ ### Roles
800
+
801
+ ```bash
802
+ # List roles
803
+ c8 list roles
804
+
805
+ # Search roles
806
+ c8 search roles --name=admin
807
+
808
+ # Get role by ID
809
+ c8 get role admin
810
+
811
+ # Create a role
812
+ c8 create role --roleId=viewer --name=Viewer
813
+
814
+ # Delete a role
815
+ c8 delete role viewer
816
+
817
+ # Assign a role to a user
818
+ c8 assign role admin --to-user=john
819
+
820
+ # Unassign a role from a user
821
+ c8 unassign role admin --from-user=john
822
+
823
+ # Assign a role to a group
824
+ c8 assign role admin --to-group=engineering
825
+ ```
826
+
827
+ ### Groups
828
+
829
+ ```bash
830
+ # List groups
831
+ c8 list groups
832
+
833
+ # Search groups
834
+ c8 search groups --name=engineering
835
+
836
+ # Get group by ID
837
+ c8 get group engineering
838
+
839
+ # Create a group
840
+ c8 create group --groupId=engineering --name=Engineering
841
+
842
+ # Delete a group
843
+ c8 delete group engineering
844
+
845
+ # Assign a user to a group
846
+ c8 assign user john --to-group=engineering
847
+
848
+ # Unassign a user from a group
849
+ c8 unassign user john --from-group=engineering
850
+ ```
851
+
852
+ ### Tenants
853
+
854
+ ```bash
855
+ # List tenants
856
+ c8 list tenants
857
+
858
+ # Search tenants
859
+ c8 search tenants --name=production
860
+
861
+ # Get tenant by ID
862
+ c8 get tenant production
863
+
864
+ # Create a tenant
865
+ c8 create tenant --tenantId=production --name=Production
866
+
867
+ # Delete a tenant
868
+ c8 delete tenant production
869
+
870
+ # Assign a group to a tenant
871
+ c8 assign group engineering --to-tenant=production
872
+ ```
873
+
874
+ ### Authorizations
875
+
876
+ ```bash
877
+ # List authorizations
878
+ c8 list auth
879
+
880
+ # Search authorizations
881
+ c8 search auth --ownerId=john --ownerType=USER
882
+
883
+ # Get authorization by key
884
+ c8 get auth 2251799813685249
885
+
886
+ # Create an authorization
887
+ c8 create auth --ownerId=john --ownerType=USER --resourceType=PROCESS_DEFINITION --resourceId=order-process --permissions=READ,UPDATE
888
+
889
+ # Delete an authorization
890
+ c8 delete auth 2251799813685249
891
+ ```
892
+
893
+ ### Mapping Rules
894
+
895
+ ```bash
896
+ # List mapping rules
897
+ c8 list mapping-rules
898
+
899
+ # Search mapping rules
900
+ c8 search mapping-rules --claimName=groups --claimValue=admins
901
+
902
+ # Get mapping rule by ID
903
+ c8 get mapping-rule my-rule
904
+
905
+ # Create a mapping rule
906
+ c8 create mapping-rule --mappingRuleId=my-rule --name='Admin Mapping' --claimName=groups --claimValue=admins
907
+
908
+ # Delete a mapping rule
909
+ c8 delete mapping-rule my-rule
910
+
911
+ # Assign a mapping rule to a tenant
912
+ c8 assign mapping-rule my-rule --to-tenant=production
913
+ ```
914
+
915
+ ---
916
+
917
+ ## Which
918
+
919
+ Show the currently active profile or output mode:
920
+
921
+ ```bash
922
+ # Show active profile
923
+ c8 which profile
924
+
925
+ # Show current output mode
926
+ c8 which output
927
+ ```
928
+
929
+ ---
930
+
931
+ ## Doctor
932
+
933
+ Surface plugin-loading collisions detected at startup:
934
+
935
+ ```bash
936
+ # List loaded plugins and any collisions
937
+ c8 doctor plugin
938
+
939
+ # Machine-readable output
940
+ c8 doctor plugin --json
941
+ ```
942
+
943
+ ---
944
+
945
+ ## Watch with Process Applications
946
+
947
+ Watch mode supports process application deployment with `--process-application` (or `--pa`):
948
+
949
+ ```bash
950
+ # Watch and deploy the entire process application
951
+ c8 watch --process-application
952
+
953
+ # Short form
954
+ c8 watch --pa
955
+
956
+ # Watch a specific directory as a process application
957
+ c8 watch ./my-app --pa
958
+ ```
959
+
960
+ ---
961
+
730
962
  ## Profile Management
731
963
 
732
964
  c8ctl supports two types of profiles:
package/README.md CHANGED
@@ -7,7 +7,10 @@ c8ctl (_pronounced: "cocktail"_) — a minimal-dependency CLI for Camunda 8 oper
7
7
  - **Multi-Tenant Support**: Full support for multi-tenancy across all operations
8
8
  - **Profile Management**: Store and manage multiple cluster configurations
9
9
  - **Camunda Modeler Integration**: Automatically import and use profiles from Camunda Modeler
10
+ - **Identity Management**: Manage users, roles, groups, tenants, authorizations, and mapping rules
10
11
  - **Plugin System**: Extend c8ctl with custom commands via npm packages
12
+ - **Local Cluster**: Run a local Camunda 8 instance directly — no Docker required
13
+ - **MCP Proxy**: Bridge local MCP clients to remote Camunda 8 for AI agent integration
11
14
  - **Building Block Deployment**: Automatic prioritization of `*_bb-*` folders during deployment, marked with 🧱 in results
12
15
  - **Process Application Support**: Resources in folders with `.process-application` file marked with 📦 in results
13
16
  - **Enhanced Deployment Results**: Table view showing file paths, visual indicators, resource details, and versions
@@ -16,6 +19,9 @@ c8ctl (_pronounced: "cocktail"_) — a minimal-dependency CLI for Camunda 8 oper
16
19
  - **Open Applications**: Open Camunda web applications (Operate, Tasklist, Modeler, Optimize) in the browser directly from the CLI
17
20
  - **Search**: Powerful search across process definitions, process instances, user tasks, incidents, jobs, and variables with filter, wildcard, and case-insensitive support
18
21
  - **Flexible Output**: Switch between human-readable text and JSON output modes
22
+ - **Shell Completion**: Auto-install completions for bash, zsh, and fish with automatic refresh on upgrade
23
+ - **Agent Flags**: `--dry-run` to preview API requests and `--fields` to filter output columns for AI agents and scripts
24
+ - **Debug Mode**: Enable detailed logging to stderr with `DEBUG=1` or `C8CTL_DEBUG=true`
19
25
 
20
26
  ## Beware the 🤖
21
27
 
@@ -137,49 +143,27 @@ c8ctl completion install --shell zsh
137
143
 
138
144
  This writes a completion script to the c8ctl data directory and wires it into your shell config (RC file for bash/zsh; completions directory for fish). Completions are **automatically refreshed** when c8ctl is upgraded — no manual re-install needed.
139
145
 
140
- #### Manual Setup
146
+ #### Manual setup
141
147
 
142
- If you prefer to manage the completion script yourself:
143
-
144
- #### Bash
148
+ If you prefer to manage the completion script yourself, generate it with
149
+ `c8ctl completion <shell>` (where `<shell>` is `bash`, `zsh`, or `fish`),
150
+ then source or install it:
145
151
 
146
152
  ```bash
147
- # Generate and source completion script
153
+ # Bash
148
154
  c8ctl completion bash > ~/.c8ctl-completion.bash
149
155
  echo 'source ~/.c8ctl-completion.bash' >> ~/.bashrc
150
- source ~/.bashrc
151
- ```
152
-
153
- Or for immediate use in the current session:
154
-
155
- ```bash
156
- source <(c8ctl completion bash)
157
- ```
158
-
159
- #### Zsh
156
+ source ~/.c8ctl-completion.bash
160
157
 
161
- ```bash
162
- # Generate and source completion script
158
+ # Zsh
163
159
  c8ctl completion zsh > ~/.c8ctl-completion.zsh
164
160
  echo 'source ~/.c8ctl-completion.zsh' >> ~/.zshrc
165
- source ~/.zshrc
166
- ```
167
-
168
- Or for immediate use in the current session:
169
-
170
- ```bash
171
- source <(c8ctl completion zsh)
172
- ```
161
+ source ~/.c8ctl-completion.zsh
173
162
 
174
- #### Fish
175
-
176
- ```bash
177
- # Generate and install completion script
163
+ # Fish (auto-loaded on next start)
178
164
  c8ctl completion fish > ~/.config/fish/completions/c8ctl.fish
179
165
  ```
180
166
 
181
- Fish will automatically load the completion on next shell start.
182
-
183
167
  ### Credential Resolution
184
168
 
185
169
  Credentials are resolved in the following order:
@@ -417,63 +401,9 @@ c8ctl help
417
401
  - URL/git source: installs `<source>#<version>`
418
402
  - file source (`file://`): version downgrade is not supported; use `load plugin --from` with the desired local plugin checkout
419
403
 
420
- **Plugin Development:**
421
-
422
- - Use `c8ctl init plugin <name>` to scaffold a new plugin with TypeScript template
423
- - Convention over configuration: the directory is always prefixed with `c8ctl-plugin-`, and the plugin is registered by the suffix after the prefix (e.g., `c8ctl init plugin c8ctl-plugin-foo` creates directory `c8ctl-plugin-foo` and registers plugin name `foo`)
424
- - Generated scaffold includes all necessary files, build configuration, and an `AGENTS.md` guide for autonomous plugin implementation
425
- - Plugins have access to the c8ctl runtime via `globalThis.c8ctl`
426
- - Plugins can create SDK clients via `globalThis.c8ctl.createClient(profile?, sdkConfig?)`
427
- - Plugins can resolve tenant IDs via `globalThis.c8ctl.resolveTenantId(profile?)`
428
- - Plugins can access c8ctl output-aware logging via `globalThis.c8ctl.getLogger()`
429
- - See the bundled `hello-world` plugin in `default-plugins/` for a complete example
430
-
431
- **Plugin Requirements:**
432
-
433
- - Plugin packages must be regular Node.js modules
434
- - They must include a `c8ctl-plugin.js` or `c8ctl-plugin.ts` file in the root directory
435
- - The plugin file must export a `commands` object
436
- - Optionally export a `metadata` object to provide help text
437
- - Plugins are installed globally and work from any directory
438
- - The runtime object `c8ctl` provides environment information to plugins
439
- - The runtime object `c8ctl` exposes `createClient(profile?, sdkConfig?)` for creating Camunda SDK clients from plugins
440
- - The runtime object `c8ctl` exposes `resolveTenantId(profile?)` using the same fallback logic as built-in commands
441
- - The runtime object `c8ctl` exposes `getLogger()` returning the c8ctl logger instance (respects current output mode)
442
- - **Important**: `c8ctl-plugin.js` must be JavaScript. Node.js doesn't support type stripping in `node_modules`. If writing in TypeScript, transpile to JS before publishing.
443
-
444
- **TypeScript Plugin Autocomplete:**
445
-
446
- ```typescript
447
- import type { C8ctlPluginRuntime } from '@camunda8/cli/runtime';
448
-
449
- const c8ctl = globalThis.c8ctl as C8ctlPluginRuntime;
450
- const tenantId = c8ctl.resolveTenantId();
451
- const logger = c8ctl.getLogger();
452
- logger.info(`Tenant: ${tenantId}`);
453
- ```
404
+ When plugins are loaded, their commands automatically appear in `c8ctl help` output.
454
405
 
455
- **Example Plugin Structure:**
456
-
457
- ```typescript
458
- // c8ctl-plugin.ts
459
- export const metadata = {
460
- name: 'my-plugin',
461
- description: 'My custom c8ctl plugin',
462
- commands: {
463
- analyze: {
464
- description: 'Analyze BPMN processes'
465
- }
466
- }
467
- };
468
-
469
- export const commands = {
470
- analyze: async (args: string[]) => {
471
- console.log('Analyzing...', args);
472
- }
473
- };
474
- ```
475
-
476
- When plugins are loaded, their commands automatically appear in `c8ctl help` output. See [PLUGIN-HELP.md](PLUGIN-HELP.md) for detailed documentation on plugin help integration.
406
+ For plugin development (scaffolding, runtime API, flags, TypeScript support), see [PLUGIN-HELP.md](PLUGIN-HELP.md).
477
407
 
478
408
  ---
479
409
 
@@ -616,122 +546,60 @@ Run `c8ctl help cluster` for full details. See [EXAMPLES.md](EXAMPLES.md#local-c
616
546
 
617
547
  ---
618
548
 
619
- ### Core Components
620
-
621
- - **Logger** (`src/logger.ts`): Handles output in text or JSON mode
622
- - **Config** (`src/config.ts`): Manages profiles, session state, and credential resolution
623
- - **Client** (`src/client.ts`): Factory for creating Camunda 8 SDK clients
624
- - **Commands** (`src/commands/`): Domain-specific command handlers
625
-
626
549
  ### Command Structure
627
550
 
628
551
  ```shell
629
552
  c8ctl <verb> <resource> [arguments] [flags]
630
553
  ```
631
554
 
555
+ <!-- verb-resource-list:start -->
556
+ <!-- Auto-generated from COMMAND_REGISTRY. Do not edit manually.
557
+ Run: node --experimental-strip-types scripts/sync-readme-commands.ts -->
558
+
632
559
  **Verbs**:
633
560
 
634
- - `list` - List resources
561
+ - `list` - List resources (process, identity)
635
562
  - `search` - Search resources with filters
636
563
  - `get` - Get resource by key
637
564
  - `create` - Create resource
565
+ - `delete` - Delete resource
638
566
  - `cancel` - Cancel resource
567
+ - `await` - Create and await completion (alias for create --awaitCompletion)
639
568
  - `complete` - Complete resource
640
569
  - `fail` - Fail a job
641
- - `activate` - Activate jobs
570
+ - `activate` - Activate jobs by type
642
571
  - `resolve` - Resolve incident
643
572
  - `publish` - Publish message
644
573
  - `correlate` - Correlate message
574
+ - `set` - Set variables on an element instance
645
575
  - `deploy` - Deploy resources
646
576
  - `run` - Deploy and start process
647
- - `watch` (alias: `w`) - Watch for changes and auto-deploy
577
+ - `assign` - Assign resource to target
578
+ - `unassign` - Unassign resource from target
579
+ - `watch` (alias: `w`) - Watch files for changes and auto-deploy
580
+ - `open` - Open Camunda web application in browser
648
581
  - `add` - Add a profile
649
582
  - `remove` (alias: `rm`) - Remove a profile
650
- - `load` - Load a plugin
651
- - `unload` - Unload a plugin
583
+ - `load` - Load a c8ctl plugin
584
+ - `unload` (alias: `rm`) - Unload a c8ctl plugin
585
+ - `upgrade` - Upgrade a plugin
586
+ - `downgrade` - Downgrade a plugin to a specific version
652
587
  - `sync` - Synchronize plugins
588
+ - `init` - Create a new plugin from TypeScript template
589
+ - `doctor` - Diagnose plugin loading state and collisions
653
590
  - `use` - Set active profile or tenant
654
591
  - `output` - Show or set output format
655
- - `cluster` - Manage local Camunda 8 cluster (start, stop, status, logs, install, delete, list, list-remote)
656
592
  - `completion` - Generate shell completion script
593
+ - `mcp-proxy` - Start a STDIO to remote HTTP MCP proxy server
657
594
  - `feedback` - Open the feedback page to report issues or request features
595
+ - `help` (alias: `menu`) - Show help
596
+ - `which` - Show active profile or output mode
658
597
 
659
- **Resources**: process-instance (pi), process-definition (pd), user-task (ut), incident (inc), job, jobs, variables (vars), message (msg), topology, profile, tenant, plugin
598
+ **Resources**: authorization (auth), form, group, incident (inc), job, jobs, mapping-rule (mr), message (msg), plugin, process-definition (pd), process-instance (pi), profile, role, tenant, topology, user, user-task (ut), variable (var, vars)
599
+ <!-- verb-resource-list:end -->
660
600
 
661
601
  **Tip**: Run `c8ctl help <command>` to see detailed help for specific commands with all available flags.
662
602
 
663
- ## Testing
664
-
665
- ### Run All Tests
666
-
667
- ```bash
668
- npm test
669
- ```
670
-
671
- ### Run Unit Tests Only
672
-
673
- ```bash
674
- npm run test:unit
675
- ```
676
-
677
- ### Run Integration Tests
678
-
679
- Integration tests require a running Camunda 8 instance at `http://localhost:8080`.
680
-
681
- 1. Start a local Camunda 8 instance (e.g., using `c8ctl cluster start`)
682
- 2. Run: `npm run test:integration`
683
-
684
- ## Development
685
-
686
- - **Native TypeScript**: Runs directly with Node.js 22.18+ (no compilation needed)
687
-
688
- ### Project Structure
689
-
690
- ```shell
691
- c8ctl/
692
- ├── src/
693
- │ ├── index.ts # CLI entry point
694
- │ ├── logger.ts # Output handling
695
- │ ├── config.ts # Configuration management
696
- │ ├── client.ts # SDK client factory
697
- │ └── commands/ # Command handlers
698
- │ └── ...
699
- ├── tests/
700
- │ ├── unit/ # Unit tests
701
- │ ├── integration/ # Integration tests
702
- │ └── fixtures/ # Test fixtures
703
- ├── package.json
704
- ├── tsconfig.json
705
- └── README.md
706
- ```
707
-
708
- ### Running the CLI
709
-
710
- ```bash
711
- # If installed globally
712
- c8ctl <command>
713
- # Or using the alias
714
- c8 <command>
715
-
716
- # For local development with Node.js 22.18+ (native TypeScript)
717
- node src/index.ts <command>
718
-
719
- # Testing with npm link (requires build first)
720
- npm run build
721
- npm link
722
- c8ctl <command>
723
- ```
724
-
725
- **Note**: The build step is only required for publishing or using `npm link`. Development uses native TypeScript execution via `node src/index.ts`.
726
-
727
- ### Adding New Commands
728
-
729
- 1. Create command handler in `src/commands/`
730
- 2. Wire into `src/index.ts` command routing
731
- 3. Add tests in `tests/unit/` and `tests/integration/`
732
- 4. Update help text in `src/commands/help.ts`
733
- 5. Document in `EXAMPLES.md`
734
-
735
603
  ## Environment Variables
736
604
 
737
605
  - `CAMUNDA_BASE_URL`: Cluster base URL
@@ -820,7 +688,7 @@ These flags are available on `list` and `search` commands.
820
688
  | `--asc` | boolean | | Sort ascending |
821
689
  | `--desc` | boolean | | Sort descending |
822
690
  | `--limit` | string | | Maximum number of results |
823
- | `--between` | string | | Date range filter (e.g. 7d, 30d, 2024-01-01..2024-12-31) |
691
+ | `--between` | string | | Date range filter (e.g. 2024-01-01..2024-12-31, ..2024-12-31, 2024-01-01..) |
824
692
  | `--dateField` | string | | Date field for --between filter |
825
693
 
826
694
  ### Commands
@@ -1685,12 +1553,11 @@ Remove a profile (alias: rm)
1685
1553
 
1686
1554
  **Aliases:** `rm`
1687
1555
 
1688
- **Resources:** profile, plugin
1556
+ **Resources:** profile
1689
1557
 
1690
1558
  **Positional arguments:**
1691
1559
 
1692
1560
  - **profile:** `<name>` (required)
1693
- - **plugin:** `<package>` (required)
1694
1561
 
1695
1562
  **Flags:**
1696
1563
 
@@ -1949,4 +1816,4 @@ Apache 2.0 - see LICENSE.md
1949
1816
 
1950
1817
  ## Contributing
1951
1818
 
1952
- See `AGENTS.md` for commit message conventions.
1819
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, testing, project structure, and how to add new commands. See [AGENTS.md](AGENTS.md) for commit conventions and coding standards.
@@ -8,6 +8,7 @@
8
8
  * lived in index.ts.
9
9
  */
10
10
  import { completionCommand } from "./commands/completion.js";
11
+ import { deployCommand } from "./commands/deploy.js";
11
12
  import { getFormCommand } from "./commands/forms.js";
12
13
  import { assignFallbackCommand, assignGroupCommand, assignMappingRuleCommand, assignRoleCommand, assignUserCommand, createIdentityAuthorizationCommand, createIdentityGroupCommand, createIdentityMappingRuleCommand, createIdentityRoleCommand, createIdentityTenantCommand, createIdentityUserCommand, deleteIdentityAuthorizationCommand, deleteIdentityGroupCommand, deleteIdentityMappingRuleCommand, deleteIdentityRoleCommand, deleteIdentityTenantCommand, deleteIdentityUserCommand, getIdentityAuthorizationCommand, getIdentityGroupCommand, getIdentityMappingRuleCommand, getIdentityRoleCommand, getIdentityTenantCommand, getIdentityUserCommand, listAuthorizationsCommand, listGroupsCommand, listMappingRulesCommand, listRolesCommand, listTenantsCommand, listUsersCommand, searchIdentityAuthorizationsCommand, searchIdentityGroupsCommand, searchIdentityMappingRulesCommand, searchIdentityRolesCommand, searchIdentityTenantsCommand, searchIdentityUsersCommand, unassignFallbackCommand, unassignGroupCommand, unassignMappingRuleCommand, unassignRoleCommand, unassignUserCommand, } from "./commands/identity.js";
13
14
  import { getIncidentCommand, listIncidentsCommand, resolveIncidentCommand, } from "./commands/incidents.js";
@@ -26,7 +27,6 @@ import { getTopologyCommand } from "./commands/topology.js";
26
27
  import { completeUserTaskCommand, listUserTasksCommand, } from "./commands/user-tasks.js";
27
28
  import { setVariableCommand } from "./commands/variables.js";
28
29
  import { watchCommand } from "./commands/watch.js";
29
- import { deployCommand } from "./deployments.js";
30
30
  /**
31
31
  * Dispatch map keyed by "verb:resource".
32
32
  * For resourceless verbs the key is "verb:" (empty resource).
@@ -1 +1 @@
1
- {"version":3,"file":"command-dispatch.js","sourceRoot":"","sources":["../src/command-dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-dispatch.js","sourceRoot":"","sources":["../src/command-dispatch.ts"],"names":[],"mappings":"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"}