@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.
- package/CONTEXT.md +7 -15
- package/EXAMPLES.md +233 -1
- package/README.md +44 -177
- package/dist/command-dispatch.js +1 -1
- package/dist/command-dispatch.js.map +1 -1
- package/dist/command-registry.d.ts +19 -7
- package/dist/command-registry.d.ts.map +1 -1
- package/dist/command-registry.js +47 -7
- package/dist/command-registry.js.map +1 -1
- package/dist/commands/deploy.d.ts +13 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +91 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/{deployments.d.ts → commands/helpers/deploy-helpers.d.ts} +49 -12
- package/dist/commands/helpers/deploy-helpers.d.ts.map +1 -0
- package/dist/{deployments.js → commands/helpers/deploy-helpers.js} +16 -97
- package/dist/commands/helpers/deploy-helpers.js.map +1 -0
- package/dist/commands/identity-authorizations.d.ts +0 -13
- package/dist/commands/identity-authorizations.d.ts.map +1 -1
- package/dist/commands/identity-authorizations.js +1 -1
- package/dist/commands/identity-authorizations.js.map +1 -1
- package/dist/commands/identity.d.ts +1 -21
- package/dist/commands/identity.d.ts.map +1 -1
- package/dist/commands/identity.js +7 -8
- package/dist/commands/identity.js.map +1 -1
- package/dist/commands/profiles.d.ts +0 -32
- package/dist/commands/profiles.d.ts.map +1 -1
- package/dist/commands/profiles.js +5 -36
- package/dist/commands/profiles.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +2 -2
- package/dist/commands/watch.js.map +1 -1
- package/dist/default-plugins/bpmn/c8ctl-plugin.js +7374 -137
- package/dist/default-plugins/bpmn/package.json +8 -1
- package/dist/default-plugins/element-template/c8ctl-plugin.js +10194 -248
- package/dist/default-plugins/element-template/package.json +11 -1
- package/dist/default-plugins/feel/c8ctl-plugin.js +14030 -584
- package/dist/default-plugins/feel/package.json +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -9
- package/dist/index.js.map +1 -1
- package/dist/resource-extensions.d.ts.map +1 -0
- package/dist/resource-extensions.js.map +1 -0
- package/dist/vendor/bpmnlint.cjs +25907 -0
- package/package.json +11 -13
- package/dist/commands/resource-extensions.d.ts.map +0 -1
- package/dist/commands/resource-extensions.js.map +0 -1
- package/dist/default-plugins/bpmn/c8ctl-plugin.js.map +0 -1
- package/dist/default-plugins/bpmn/format.js +0 -64
- package/dist/default-plugins/bpmn/format.js.map +0 -1
- package/dist/default-plugins/bpmn/lint.js +0 -323
- package/dist/default-plugins/bpmn/lint.js.map +0 -1
- package/dist/default-plugins/element-template/c8ctl-plugin.js.map +0 -1
- package/dist/default-plugins/element-template/commands/apply.js +0 -337
- package/dist/default-plugins/element-template/commands/apply.js.map +0 -1
- package/dist/default-plugins/element-template/commands/get-properties.js +0 -350
- package/dist/default-plugins/element-template/commands/get-properties.js.map +0 -1
- package/dist/default-plugins/element-template/commands/get.js +0 -107
- package/dist/default-plugins/element-template/commands/get.js.map +0 -1
- package/dist/default-plugins/element-template/commands/info.js +0 -196
- package/dist/default-plugins/element-template/commands/info.js.map +0 -1
- package/dist/default-plugins/element-template/commands/search.js +0 -106
- package/dist/default-plugins/element-template/commands/search.js.map +0 -1
- package/dist/default-plugins/element-template/commands/sync.js +0 -36
- package/dist/default-plugins/element-template/commands/sync.js.map +0 -1
- package/dist/default-plugins/element-template/helpers.js +0 -515
- package/dist/default-plugins/element-template/helpers.js.map +0 -1
- package/dist/default-plugins/element-template/marketplace.js +0 -597
- package/dist/default-plugins/element-template/marketplace.js.map +0 -1
- package/dist/default-plugins/element-template/template-ref.js +0 -243
- package/dist/default-plugins/element-template/template-ref.js.map +0 -1
- package/dist/default-plugins/feel/c8ctl-plugin.js.map +0 -1
- package/dist/default-plugins/hello-world/README.md +0 -161
- package/dist/default-plugins/hello-world/c8ctl-plugin.js +0 -69
- package/dist/default-plugins/hello-world/package.json +0 -8
- package/dist/deployments.d.ts.map +0 -1
- package/dist/deployments.js.map +0 -1
- /package/dist/{commands/resource-extensions.d.ts → resource-extensions.d.ts} +0 -0
- /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
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
|
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
|
|
146
|
+
#### Manual setup
|
|
141
147
|
|
|
142
|
-
If you prefer to manage the completion script yourself
|
|
143
|
-
|
|
144
|
-
|
|
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
|
-
#
|
|
153
|
+
# Bash
|
|
148
154
|
c8ctl completion bash > ~/.c8ctl-completion.bash
|
|
149
155
|
echo 'source ~/.c8ctl-completion.bash' >> ~/.bashrc
|
|
150
|
-
source ~/.
|
|
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
|
-
|
|
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 ~/.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
- `
|
|
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**:
|
|
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.
|
|
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
|
|
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
|
|
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.
|
package/dist/command-dispatch.js
CHANGED
|
@@ -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":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACN,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,kCAAkC,EAClC,0BAA0B,EAC1B,gCAAgC,EAChC,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,kCAAkC,EAClC,0BAA0B,EAC1B,gCAAgC,EAChC,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,+BAA+B,EAC/B,uBAAuB,EACvB,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,mCAAmC,EACnC,2BAA2B,EAC3B,iCAAiC,EACjC,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,eAAe,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACN,uBAAuB,EACvB,qBAAqB,GACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EACN,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,2BAA2B,EAC3B,6BAA6B,GAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACN,2BAA2B,EAC3B,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,GAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EACN,sBAAsB,EACtB,iBAAiB,EACjB,+BAA+B,EAC/B,6BAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EACN,uBAAuB,EACvB,oBAAoB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"command-dispatch.js","sourceRoot":"","sources":["../src/command-dispatch.ts"],"names":[],"mappings":"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"}
|